Insertion de plusieurs lignes dans une seule requête SQL? [dupliquer]
cette question a déjà une réponse ici:
- Comment puis-je insérer plusieurs lignes sans répéter le "INSERT INTO dbo.Bla" la partie de la déclaration? 13 Réponses
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
les 4 rangées en une seule SQL statement
?
4 réponses
dans SQL Server 2008, vous pouvez insérer plusieurs lignes en utilisant une seule instruction SQL INSERT.
INSERT INTO MyTable ( Column1, Column2 ) VALUES
( Value1, Value2 ), ( Value1, Value2 )
pour référence à ceci, jetez un oeil au cours MOC 2778A - écrire des 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');
si vous insérez dans une seule table, 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');
NOTE: cette réponse est pour SQL Server 2005. Pour SQL Server 2008 et plus tard, il y a des méthodes bien meilleures que celles décrites dans les autres réponses.
vous pouvez utiliser insérer avec SELECT UNION tous :
INSERT INTO MyTable (FirstCol, SecondCol)
SELECT 'First' ,1
UNION ALL
SELECT 'Second' ,2
UNION ALL
SELECT 'Third' ,3
...
seulement pour les petits ensembles de données cependant, qui devrait être très bien pour vos 4 enregistrements.
INSERT
les énoncés qui utilisent la syntaxe VALUES
peuvent insérer plusieurs lignes. Pour ce faire, incluez plusieurs listes de valeurs de colonne, chacune comprise entre parenthèses et séparée par des virgules.
exemple:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);