Tengo varios conjuntos de datos para insertar a la vez, digamos 4 filas. Mi tabla tiene tres columnas: Persona
, Id
y Oficina
.
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");
¿Puedo insertar las 4 filas en una sola sentencia SQL?
En SQL Server 2008 se pueden insertar varias filas utilizando una única sentencia SQL INSERT.
INSERT INTO MyTable ( Column1, Column2 ) VALUES
( Value1, Value2 ), ( Value1, Value2 )
Para consultar esto, eche un vistazo al curso MOC 2778A - Escribir consultas SQL en SQL Server 2008.
Por ejemplo:
INSERT INTO MyTable
( Column1, Column2, Column3 )
VALUES
('John', 123, 'Lloyds Office'),
('Jane', 124, 'Lloyds Office'),
('Billy', 125, 'London Office'),
('Miranda', 126, 'Bristol Office');
Si está insertando en una sola tabla, puede escribir su consulta así (quizás sólo en MySQL):
INSERT INTO table1 (First, Last)
VALUES
('Fred', 'Smith'),
('John', 'Smith'),
('Michael', 'Smith'),
('Robert', 'Smith');
NOTA: Esta respuesta es para SQL Server 2005. Para SQL Server 2008 y posteriores, hay métodos mucho mejores como se ve en las otras respuestas.
Puedes usar INSERT con SELECT UNION ALL:
INSERT INTO MyTable (FirstCol, SecondCol)
SELECT 'First' ,1
UNION ALL
SELECT 'Second' ,2
UNION ALL
SELECT 'Third' ,3
...
Aunque sólo para conjuntos de datos pequeños, lo que debería estar bien para tus 4 registros.