如何在同一SQL语句中插入多行

Abd*_*rah 0 sql sql-server

我运行这个声明:

CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);

INSERT INTO Persons (PersonID, LastName, FirstName, Address, City)
VALUES ((001, 002), ("f", "Doe"), ("f", "John"), ("6256 german Ave S", "1234 random ave"), ("berlin", "Rondomville"))
Run Code Online (Sandbox Code Playgroud)

并得到此错误:

Operand should contain 1 column(s)
Run Code Online (Sandbox Code Playgroud)

我不知道我到底做错了什么.

如果我运行以下声明,那么everthing工作正常:

CREATE TABLE Persons
(
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);

INSERT INTO Persons (PersonID, LastName, FirstName, Address, City)
VALUES(001, "f", "a", "6254 german Ave S", "berlin")
Run Code Online (Sandbox Code Playgroud)

Siy*_*ual 6

正确的语法是:

INSERT INTO Persons 
            (PersonID, LastName, FirstName, Address, City)
VALUES      (1, 'f', 'f', '6256 german Ave S', 'berlin'),
            (2, 'Doe', 'John', '1234 random ave', 'Rondomville')
Run Code Online (Sandbox Code Playgroud)

或者,你可以做INSERT INTO ... SELECT一个UNION ALL:

INSERT INTO         Persons 
                    (PersonID, LastName, FirstName, Address, City)
SELECT              1, 'f', 'f', '6256 german Ave S', 'berlin'
UNION ALL SELECT    2, 'Doe', 'John', '1234 random ave', 'Rondomville'
Run Code Online (Sandbox Code Playgroud)