¿Insertar varias filas en una sola consulta SQL? [duplicar]

Resuelto asked hace 15 años • 0 respuestas

Tengo varios conjuntos de datos para insertar a la vez, digamos 4 filas. Mi tabla tiene tres columnas Person: Idy 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?

 avatar Jan 17 '09 12:01
Aceptado

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');
BinaryMisfit avatar Jan 17 '2009 07:01 BinaryMisfit

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');
too much php avatar Jan 17 '2009 06:01 too much php

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.

DavGarcia avatar Jan 17 '2009 06:01 DavGarcia

INSERTLas declaraciones que utilizan VALUESsintaxis 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);
 avatar Apr 01 '2009 14:04