web-dev-qa-db-ja.com

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

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

私のテーブルは3つの列を持っています:PersonIdそしてOffice

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できますか?

1535
rits

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');
2058
BinaryMisfit

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

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

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

SELECT UNION ALLとともに INSERTを使用できます

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

ただし、小さいデータセットの場合のみです。これは4つのレコードに適しています。

128
DavGarcia