【SQL】Selectの結果をInsertする

Selectで取得した結果をそのままInsertすることができます。


Insert into Table1 A
(A.列1,A.列2,A.列3)
Select
B.列1,B.列2,B.列3
From Table2 B;

InsertとSelectで指定する列は一致している必要があります。Table1とTable2は同じテーブルでも構いません。

また、主キーを自動採番(連番)させることも可能です。この場合、主キー(B.列1)がNULLである可能性を考慮して、CASEを使用しています。


Insert into Table1 A
(A.列1,A.列2,A.列3)
Select
CASE WHEN MAX(B.列1) is NULL
THEN 1
ELSE MAX(B.列1)+1
END,
B.列2,B.列3
From Table2 B;