Mam wiele zestawów danych do wstawienia na raz, powiedzmy 4 wiersze. Moja tabela ma trzy kolumny: Person
, Id
i 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");
Czy mogę wstawić wszystkie 4 wiersze w pojedynczej instrukcji SQL?
W SQL Server 2008 możesz wstawiać wiele wierszy za pomocą pojedynczego polecenia SQL INSERT.
INSERT INTO MyTable ( Column1, Column2 ) VALUES
( Value1, Value2 ), ( Value1, Value2 )
Aby się do tego odnieść zajrzyj na MOC Course 2778A - Writing SQL Queries in SQL Server 2008.
Na przykład:
INSERT INTO MyTable
( Column1, Column2, Column3 )
VALUES
('John', 123, 'Lloyds Office'),
('Jane', 124, 'Lloyds Office'),
('Billy', 125, 'London Office'),
('Miranda', 126, 'Bristol Office');
Jeśli wstawiasz do pojedynczej tabeli, możesz napisać zapytanie w ten sposób (być może tylko w MySQL):
INSERT INTO table1 (First, Last)
VALUES
('Fred', 'Smith'),
('John', 'Smith'),
('Michael', 'Smith'),
('Robert', 'Smith');
UWAGA: Ta odpowiedź jest dla SQL Server 2005. Dla SQL Server 2008 i nowszych istnieją znacznie lepsze metody, jak widać w innych odpowiedziach.
Możesz użyć INSERT z SELECT UNION ALL:
INSERT INTO MyTable (FirstCol, SecondCol)
SELECT 'First' ,1
UNION ALL
SELECT 'Second' ,2
UNION ALL
SELECT 'Third' ,3
...
Jednak tylko dla małych zbiorów danych, które powinny być w porządku dla twoich 4 rekordów.