INSERT INTO new_table(birthday, fullname, age)
SELECT birthday, fullname, age
FROM src_table
;
既存テーブルと新規テーブルのカラム数が同じ場合は、SELECT句に*を指定しても大丈夫です。
重複を除いた新規テーブルを作る場合
INSERT INTO new_table(birthday, fullname, age)
SELECT *
FROM src_table
GROUP BY fullname
HAVING MAX(age)
;
- GROUP BY fullname:fullnameの重複をまとめている。
- HAVING MAX(age):もっとも大きいageを持つレコードに絞っている。
よくあるエラー
Table ‘new_table’ doesn’t exist
テーブル ‘new_table’は存在しません。
SELECT * INTO new_table
FROM src_table;
SQL Serverではお馴染みのテーブル複製構文、SELECT INTOをMySQLで実行したときに出るエラー。
インサート先のテーブルが存在しないことを警告されます。(そりゃそうだ、まだ作ってないんだから)
MySQLはSELECT INTO構文をサポートしていないのです。
Unknown column ‘xxxxxx’ in ‘field list’
フィールドリストの不明な列「xxxxxx」。
SELECT句やINSERT INTO句などで指定したカラム名に間違いがあり、見当たらないことを警告するエラー。