Εισαγωγή πολλαπλών γραμμών σε ένα μόνο ερώτημα SQL;

Έχω πολλαπλά σύνολα δεδομένων προς εισαγωγή ταυτόχρονα, ας πούμε 4 σειρές. Ο πίνακάς μου έχει τρεις στήλες: Person, Id και 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");

Μπορώ να εισαγάγω και τις 4 γραμμές σε μία μόνο εντολή SQL;

Στον SQL Server 2008 μπορείτε να εισαγάγετε πολλαπλές γραμμές χρησιμοποιώντας μία μόνο εντολή SQL INSERT.

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

Για αναφορά σε αυτό ρίξτε μια ματιά στο MOC Course 2778A - Writing SQL Queries in SQL Server 2008.

Για παράδειγμα:

INSERT INTO MyTable
  ( Column1, Column2, Column3 )
VALUES
  ('John', 123, 'Lloyds Office'), 
  ('Jane', 124, 'Lloyds Office'), 
  ('Billy', 125, 'London Office'),
  ('Miranda', 126, 'Bristol Office');
Σχόλια (13)

Αν κάνετε εισαγωγή σε έναν μόνο πίνακα, μπορείτε να γράψετε το ερώτημά σας ως εξής (ίσως μόνο στη MySQL):

INSERT INTO table1 (First, Last)
VALUES
    ('Fred', 'Smith'),
    ('John', 'Smith'),
    ('Michael', 'Smith'),
    ('Robert', 'Smith');
Σχόλια (10)

ΣΗΜΕΙΩΣΗ: Αυτή η απάντηση αφορά τον SQL Server 2005. Για τον SQL Server 2008 και μεταγενέστερα, υπάρχουν πολύ καλύτερες μέθοδοι, όπως φαίνεται στις άλλες απαντήσεις.

Μπορείτε να χρησιμοποιήσετε INSERT με SELECT UNION ALL:

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

Μόνο για μικρά σύνολα δεδομένων όμως, τα οποία θα πρέπει να είναι εντάξει για τις 4 εγγραφές σας.

Σχόλια (0)