Sette inn flere rader i en enkelt SQL-spørring?

Jeg har flere sett med data som skal settes inn samtidig, for eksempel 4 rader. Tabellen min har tre kolonner: Person, Id og Kontor.

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");

Kan jeg sette inn alle 4 radene i en enkelt SQL-setning?

I SQL Server 2008 kan du sette inn flere rader ved hjelp av en enkelt SQL INSERT-setning.

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

For referanse til dette, ta en titt på MOC-kurs 2778A - Skrive SQL-spørringer i SQL Server 2008.

For eksempel:

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

Hvis du setter inn i en enkelt tabell, kan du skrive spørringen din slik (kanskje bare i MySQL):

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

MERK: Dette svaret gjelder for SQL Server 2005. For SQL Server 2008 og nyere finnes det mye bedre metoder, som vist i de andre svarene.

Du kan bruke INSERT med SELECT UNION ALL:

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

Men bare for små datasett, noe som bør være greit for dine 4 poster.

Kommentarer (0)