¿Insertar varias filas en una sola consulta SQL? [duplicar]
Tengo varios conjuntos de datos para insertar a la vez, digamos 4 filas. Mi tabla tiene tres columnas Person
: Id
y 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");
¿Puedo insertar las 4 filas en una sola declaración SQL?
En SQL Server 2008 puede insertar varias filas utilizando una única instrucción SQL INSERT.
INSERT INTO MyTable ( Column1, Column2 ) VALUES
( Value1, Value2 ), ( Value1, Value2 )
Como referencia a esto, consulte el curso MOC 2778A: Escritura de 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 de esta manera (tal vez solo 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, existen 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
...
Sin embargo, solo para conjuntos de datos pequeños, lo que debería estar bien para sus 4 registros.
INSERT
Las declaraciones que utilizan VALUES
sintaxis pueden insertar varias filas. Para hacer esto, incluya varias listas de valores de columna, cada una entre paréntesis y separada por comas.
Ejemplo:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);