0

INSERT単一のステートメントを使用して複数の行を挿入するために、次の方法を使用しています。これは、行を挿入するANSIスタイルです。SQL Server 2008 および 2012 で使用できます。SQL Server 2005/2000 についてはわかりません。

テスト テーブルを作成します。

create table TestInsert (ID INT, Name NVARCHAR(50))

INSERT5 行を挿入する 1 つのステートメント

INSERT INTO TestInsert 
VALUES (1,'a'),
       (2,'b'),
       (3,'c'),
       (4,'d'),
       (5,'e')

これを達成するための他の最良の方法があれば教えてください

4

2 に答える 2

4

代わりにこれを試してください:

INSERT TestInsert
    SELECT  1, 'a'
    UNION ALL
    SELECT  2, 'b'
    UNION ALL
    SELECT  3, 'c'
    UNION ALL
    SELECT  4, 'd'
    UNION ALL
    SELECT 5, 'e' 
于 2012-04-23T07:01:05.340 に答える
2

SQL Server - 単一の ( ANSI スタイル) ステートメントで複数の行を挿入する

SQL Server 2000 以降の場合

SQL The Complete Reference, Third Edition (2009 年 8 月 12 日)によると:

1) 複数行 INSERT の構文は次のとおりです。

INSERT INTO table-name (columns not mandatory) 
query

(236 ページ、図 10-3)。

2) SELECT ステートメントには FROM 句が必須です (87 ページ、図 6-1)。

したがって、この場合、1 つのINSERTステートメントだけを使用して複数の行を挿入するには、 1 つの行だけを含む補助テーブルが必要です。

CREATE TABLE dual(value INT PRIMARY KEY CHECK(value = 1))
INSERT dual(value) VALUES(1)

その後

INSERT INTO table-name (columns) -- the columns are not mandatory
SELECT values FROM dual
UNION ALL
SELECT another-values FROM dual
UNION ALL
SELECT another-values FROM dual

編集 2: SQL Server 2008+ の場合

SQL Server 2008 以降では、行コンストラクターを使用できます: (values for row 1), (values for row 2), (values for row 3), etc.(218 ページ)。

そう、

INSERT INTO TestInsert 
VALUES (1,'a'), --The string delimiter is ' not ‘...’
       (2,'b'),
       (3,'c'),
       (4,'d'),
       (5,'e')

SQL Server 2008 以降で動作します。

于 2012-04-23T08:42:52.260 に答える