Question Insérer plusieurs lignes dans une seule requête SQL? [dupliquer]


Cette question a déjà une réponse ici:

J'ai plusieurs ensembles de données à insérer à la fois, disons 4 lignes.

Ma table a trois colonnes: Person, Id et 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");

Puis-je insert toutes les 4 lignes en un seul SQL statement?


1335
2018-01-17 05:55


origine


Réponses:


Dans SQL Server 2008, vous pouvez insérer plusieurs lignes à l'aide d'une seule instruction SQL INSERT.

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

Pour plus d'informations, consultez le cours MOC 2778A - Ecriture de requêtes SQL dans SQL Server 2008.

Par exemple:

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

1770
2018-01-17 07:14



Si vous insérez dans une table unique, vous pouvez écrire votre requête comme ceci (peut-être seulement dans MySQL):

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

703
2018-01-17 06:10



REMARQUE: Cette réponse est pour SQL Server 2005. Pour SQL Server 2008 et versions ultérieures, il existe de bien meilleures méthodes comme dans les autres réponses.

Vous pouvez utiliser INSÉRER avec SELECT UNION ALL:

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

Seulement pour les petits jeux de données, ce qui devrait être bon pour vos 4 enregistrements.


112
2018-01-17 06:16



INSERT déclarations qui utilisent VALUES La syntaxe peut insérer plusieurs lignes. Pour ce faire, incluez plusieurs listes de valeurs de colonnes, chacune étant entre parenthèses et séparées par des virgules.

Exemple:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);

69
2018-04-01 14:07