Indsættelse af flere rækker i en enkelt SQL forespørgsel?

Jeg har flere sæt data, der skal indsættes på én gang, f.eks. 4 rækker. Min tabel har tre kolonner: Person,IdogOffice`.

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 indsætte alle 4 rækker i en enkelt SQL-anvisning?

I SQL Server 2008 kan du indsætte flere rækker ved hjælp af en enkelt SQL INSERT-anvisning.

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

For reference til dette skal du kigge på MOC-kursus 2778A - Writing SQL Queries in 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 indsætter i en enkelt tabel, kan du skrive din forespørgsel på følgende måde (måske kun i MySQL):

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

BEMÆRK: Dette svar gælder for SQL Server 2005. For SQL Server 2008 og senere er der langt bedre metoder, som det fremgår af de andre svar.

Du kan bruge INSERT med SELECT UNION ALL:

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

Dog kun til små datasæt, hvilket burde være fint for dine 4 poster.

Kommentarer (0)