今回も、昨日に引き続き MySQL について。
タイトルにある通り、テーブルのデータをコピーして別のテーブルにデータを挿入する方法です。
使用頻度はあまり高くないかな?
今回参考にさせていただいたサイトはこちらから。
表をSELECTして別の表へINSERTする(INSERT ~ SELECT)- SQL Server – Priject Group
https://www.projectgroup.info/tips/SQLServer/SQL/SQL000004.html
なお参考として、記事の下の方に、同じことを Oracle Database で行う方法が書かれたページへのリンクもあります。
で、SQL文はこちら。
INSERT INTO [データ挿入先テーブル名] SELECT * FROM [コピー元テーブル名];
こちらは全カラム&全件をコピーする方法です。
もちろん、SELECT に WHERE をしてして、任意の条件に一致するデータのみを挿入することもできます。
なお、このSQL文はコピー元テーブルとコピー先テーブルの構造が一致していないと失敗するので、注意が必要です。
ですが、下記のように取得するカラムも指定すれば、定義の異なるテーブルにも挿入できます。
INSERT INTO [コピー先テーブル]([カラム1], [カラム2]) SELECT [カラム1], [カラム2] FROM [コピー元テーブル];
なお、カラムを指定するときは、順番にも気を付けてください。
以上、テーブルのデータをコピーして、別のテーブルに挿入する方法でした。
INSERT と SELECT が同時に使用されているので、一見難しそうに見えますが、落ち着いてみてみればかなり簡単ですね。
なお、実際に実行する機会があるかどうかは別として、同じテーブルにコピーしたデータを挿入することもできたので、テストデータとかを量産したいときとかに便利そうですね。