如何插入多行而不重复声明中的“INSERT INTO dbo.Blah”部分?

我知道我在几年前就已经这样做了,但我不记得它的语法,并且我无法在任何地方找到它,这是因为需要大量帮助文档和关于“批量导入”的文章。

这是我想要做的,但语法不完全正确......请,以前做过这个的人,帮助我:)

INSERT INTO dbo.MyTable (ID, Name)
VALUES (123, 'Timmy'),
    (124, 'Jonny'),
    (125, 'Sally')

我知道这是接近正确的语法。 我可能在那里需要“BULK”这个词,或者什么,我不记得了。 任何想法?

我需要这个SQL Server 2005数据库。 我试过这个代码,没有用:

DECLARE @blah TABLE
(
    ID INT NOT NULL PRIMARY KEY,
    Name VARCHAR(100) NOT NULL
)

INSERT INTO @blah (ID, Name)
    VALUES (123, 'Timmy')
    VALUES (124, 'Jonny')
    VALUES (125, 'Sally')

SELECT * FROM @blah

Incorrect syntax near the keyword 'VALUES'.收到Incorrect syntax near the keyword 'VALUES'.


INSERT INTO dbo.MyTable (ID, Name)
SELECT 123, 'Timmy'
UNION ALL
SELECT 124, 'Jonny'
UNION ALL
SELECT 125, 'Sally'

对于SQL Server 2008,可以完全按照您的问题中的语句在一个VALUES子句中执行它(您只需添加一个逗号来分隔每个值语句)...


你的语法几乎在SQL Server 2008中工作(但不在SQL Server 20051中):

CREATE TABLE MyTable (id int, name char(10));

INSERT INTO MyTable (id, name) VALUES (1, 'Bob'), (2, 'Peter'), (3, 'Joe');

SELECT * FROM MyTable;

id |  name
---+---------
1  |  Bob       
2  |  Peter     
3  |  Joe       

1当问题得到解答时,并没有证明这个问题是指SQL Server 2005.我在这里留下这个答案,因为我相信它仍然是相关的。


如果你的数据已经在你的数据库中,你可以这样做:

INSERT INTO MyTable(ID, Name)
SELECT ID, NAME FROM OtherTable

如果您需要对数据进行硬编码,那么SQL 2008和更高版本可以执行以下操作...

INSERT INTO MyTable (Name, ID)
VALUES ('First',1),
('Second',2),
('Third',3),
('Fourth',4),
('Fifth',5)
链接地址: http://www.djcxy.com/p/16903.html

上一篇: How do I insert multiple rows WITHOUT repeating the "INSERT INTO dbo.Blah" part of the statement?

下一篇: Update a table using JOIN in SQL Server?