🥼

[SQL]INSERT SELECT とは(備忘録)

2024/02/15に公開

1.INSERT SELECT とは

テーブル1から取得した結果を、テーブル2に登録する」というクエリです。

INSERT SELECT の書き方
INSERT INTO テーブル2 (
    列1,
    列2,
    ...
)
SELECT
    列1,
    列2,
    ...
FROM テーブル1
WHERE 条件
;

重要:
データを取得するテーブルとデータを登録するテーブルで、列の数とデータ型が一致していることを確認してクエリを作成してください。
列の順序も重要です。

2.サンプルプログラム

Sample.sql
CREATE TABLE employee (
    id INT AUTO_INCREMENT NOT NULL,
    name varchar(5) NOT NULL,
    PRIMARY KEY (id)
);

CREATE TABLE sales_department (
    id INT AUTO_INCREMENT NOT NULL,
    employee_id INT NOT NULL, 
    name varchar(5) NOT NULL,
    PRIMARY KEY (id)
);

INSERT INTO employee (
    name
)
VALUES ('大谷'),('山田'),('鈴木'),('山本'),('田中'),('佐藤');

-- employeeテーブルから抽出したレコードを、sales_departmentテーブルに登録
INSERT INTO sales_department (
    employee_id,
    name
)
SELECT *
FROM employee
WHERE id IN (1, 3, 5)
;

SELECT * FROM sales_department;

実行結果

id employee_id name
1 1 大谷
2 3 鈴木
3 5 田中

3.その他

実行環境

Discussion