Inserire più righe in una singola query SQL?

Ho più set di dati da inserire in una sola volta, diciamo 4 righe. La mia tabella ha tre colonne: Person, Id e 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");

Posso inserire tutte e 4 le righe in un unico statement SQL?

In SQL Server 2008 è possibile inserire più righe usando una singola istruzione SQL INSERT.

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

Per fare riferimento a questo date un'occhiata al corso MOC 2778A - Scrivere query SQL in SQL Server 2008.

Per esempio:

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

Se stai inserendo in una singola tabella, puoi scrivere la tua query in questo modo (forse solo in MySQL):

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

NOTA: Questa risposta è per SQL Server 2005. Per SQL Server 2008 e successivi, ci sono metodi molto migliori come visto nelle altre risposte.

Puoi usare INSERT con SELECT UNION ALL:

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

Solo per piccoli set di dati però, che dovrebbe andare bene per i tuoi 4 record.

Commentari (0)