A inserir várias linhas numa única pesquisa SQL? [duplicado]

tenho vários dados para inserir de uma vez, digamos 4 linhas.

A minha mesa tem três colunas.: Person, Id e 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");

posso insert todas as 4 linhas num único SQL statement?

Author: DineshDB, 2009-01-17

4 answers

No SQL Server 2008, poderá inserir várias linhas usando uma única instrução de inserção SQL.

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

Para uma referência a isto, dê uma vista de olhos no MOC Course 2778A - Writing SQL Queries in SQL Server 2008.

Por exemplo:

INSERT INTO MyTable ( Column1, Column2, Column3 )
VALUES ('John', 123, 'Lloyds Office'), 
('Jane', 124, 'Lloyds Office'), 
('Billy', 125, 'London Office'),
('Miranda', 126, 'Bristol Office');
 1840
Author: BinaryMisfit, 2018-05-03 11:21:37

Se você está inserindo em uma única tabela, você pode escrever sua consulta Assim (talvez apenas em MySQL):

INSERT INTO table1 (First, Last)
VALUES
    ('Fred', 'Smith'),
    ('John', 'Smith'),
    ('Michael', 'Smith'),
    ('Robert', 'Smith');
 720
Author: too much php, 2017-02-01 08:26:01

Nota: {[4] } esta resposta é para o servidor SQL 2005. Para o SQL Server 2008 e mais tarde, existem métodos muito melhores como visto nas outras respostas.

Pode usar inserir com seleccionar a União Todos:

INSERT INTO MyTable  (FirstCol, SecondCol)
    SELECT  'First' ,1
    UNION ALL
SELECT  'Second' ,2
    UNION ALL
SELECT  'Third' ,3
...

Apenas para pequenos conjuntos de dados, o que deve ser bom para os seus 4 registos.

 118
Author: DavGarcia, 2017-02-03 08:40:58

INSERT As declarações que usam a sintaxe VALUES podem inserir várias linhas. Para fazer isso, inclua várias listas de valores de colunas, cada uma entre parênteses e separadas por vírgulas.

Exemplo:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
 70
Author: Sparkup, 2011-07-29 11:00:19