sql-server oracle - ¿Insertar múltiples filas en una sola consulta SQL?




datos php (5)

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


Answers

INSERT que utilizan la sintaxis de VALUES pueden insertar varias 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);

NOTA: Esta respuesta es para SQL Server 2005. Para SQL Server 2008 y versiones 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.


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

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

Para obtener referencia a esto, consulte el Curso 2778A de MOC - 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 de esta manera (quizás solo en MySQL):

INSERT INTO table1 (First, Last)
VALUES
    ('Fred', 'Smith'),
    ('John', 'Smith'),
    ('Michael', 'Smith'),
    ('Robert', 'Smith');

Si usa SQL 2008 y superior:

select cast(getdate() as date)




sql sql-server tsql insert