SELECT
文の結果を、以下の書き方でテーブルに保存できる。
1 2 3 |
CREATE TABLE [talbe] SELECT [fields] FROM [tables] ... |
まずSELECTの結果が意図したとおりになっているかどうかを確認した後に、CREATE TABL
E文の後ろに書くとよい。
ただし、SELECT *
と書くのは要注意。クエリの結果によって、同じフィールド名が繰り返し現れると、テーブル作成時にエラーとなる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
mysql> select * from test, test_sex where test.name = test_sex.name; +-------+------+--------+-------+--------+ | name | age | nation | name | sex | +-------+------+--------+-------+--------+ | John | 35 | US | John | male | | Alex | 40 | NZ | Alex | male | | Luice | 29 | US | Luice | male | | Alice | 23 | UK | Alice | female | | Sala | 25 | JP | Sala | female | +-------+------+--------+-------+--------+ 5 rows in set (0.00 sec) mysql> create table test_new -> select * from test, test_sex where test.name = test_sex.name; ERROR 1050 (42S01): Table 'test_new' already exists |
クエリをテーブルに保存するときは、同じフィールド名が重複しないように注意。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
mysql> create table test_new -> select test.name, age, nation, sex -> from test, test_sex -> where test.name = test_sex.name; Query OK, 5 rows affected (0.01 sec) Records: 5 Duplicates: 0 Warnings: 0 mysql> select * from test_new; +-------+------+--------+--------+ | name | age | nation | sex | +-------+------+--------+--------+ | John | 35 | US | male | | Alex | 40 | NZ | male | | Luice | 29 | US | male | | Alice | 23 | UK | female | | Sala | 25 | JP | female | +-------+------+--------+--------+ 5 rows in set (0.00 sec) mysql> |