複数行 1 つの SQL クエリに複数の行を挿入しますか?




sqlserver カンマ区切り 結合 (4)

私は一度に挿入する複数のデータセット、例えば4行を持っています。

私のテーブルにはPersonIdOffice 3つのカラムがあります。

INSERT INTO MyTable VALUES ("John", 123, "Lloyds Office");
INSERT INTO MyTable VALUES ("Jane", 124, "Lloyds Office");
INSERT INTO MyTable VALUES ("Billy", 125, "London Office");
INSERT INTO MyTable VALUES ("Miranda", 126, "Bristol Office");

1つのSQL statement 4行すべてをinsertできSQL statementか?


VALUES構文を使用するINSERTステートメントは、複数の行を挿入できます。 これを行うには、括弧で囲まれカンマで区切られた複数の列値のリストを含めます。

例:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

注:この回答はSQL Server 2005用です。SQL Server 2008以降では、他の回答に見られるようにはるかに優れた方法があります。

SELECT UNION ALLでINSERTを使用できます。

INSERT INTO MyTable  (FirstCol, SecondCol)
    SELECT  'First' ,1
    UNION ALL
SELECT  'Second' ,2
    UNION ALL
SELECT  'Third' ,3
...

小さいデータセットの場合にのみ、あなたの4レコードでうまくいくはずです。


SQL Server 2008では、単一のSQL INSERTステートメントを使用して複数の行を挿入できます。

INSERT INTO MyTable ( Column1, Column2 ) VALUES
( Value1, Value2 ), ( Value1, Value2 )

これを参照するには、MOCコース2778A - SQL Server 2008でのSQLクエリの作成をご覧ください。

例えば:

INSERT INTO MyTable ( Column1, Column2, Column3 )
VALUES ('John', 123, 'Lloyds Office'), 
('Jane', 124, 'Lloyds Office'), 
('Billy', 125, 'London Office'),
('Miranda', 126, 'Bristol Office');

単一のテーブルに挿入する場合は、次のようにクエリを書くことができます(多分MySQLでのみ):

INSERT INTO table1 (First, Last)
VALUES
    ('Fred', 'Smith'),
    ('John', 'Smith'),
    ('Michael', 'Smith'),
    ('Robert', 'Smith');




insert