Pregunta ¿Insertar múltiples filas en una sola consulta SQL? [duplicar]


Esta pregunta ya tiene una respuesta aquí:

Tengo varios conjuntos de datos para insertar a la vez, digamos 4 filas.

Mi mesa 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 insert las 4 filas en una sola SQL statement?


1335
2018-01-17 05:55


origen


Respuestas:


En SQL Server 2008 puede insertar varias filas usando una sola instrucción SQL INSERT.

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

Para referencia, eche un vistazo al MOC Course 2778A - Writing SQL Queries 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');

1770
2018-01-17 07:14



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');

703
2018-01-17 06:10



NOTA: Esta respuesta es para SQL Server 2005. Para SQL Server 2008 y posterior, existen métodos mucho mejores que los que se ven 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
...

Solo para pequeños conjuntos de datos, lo cual debería estar bien para tus 4 registros.


112
2018-01-17 06:16



INSERT declaraciones que usan VALUES la sintaxis puede insertar múltiples filas. Para hacer esto, incluya múltiples listas de valores de columna, cada uno entre paréntesis y separados por comas.

Ejemplo:

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

69
2018-04-01 14:07