我正在尝试从select语句中插入行。但是我在语句的第一个FROM
处收到语法错误。我做错了什么?
INSERT INTO [dbo].[OrganizationControlGroup]
VALUES
(
OrganizationId,
9999,
NULL,
CONVERT(DATE,SYSDATETIME()),
NULL,
CONVERT(DATE,SYSDATETIME())
)
FROM
(
SELECT TOP 450 o.OrganizationId
FROM Organization o
WHERE NOT EXISTS
(
SELECT *
FROM OrganizationControlGroup c
WHERE c.OrganizationId = o.OrganizationId
)
)
答案 0 :(得分:6)
你的语法错了。您可以将INSERT
与VALUES
和一个(或更新的SQL Server版本中)单个记录表达式列表括在括号中,或与SELECT
一起使用。如果您使用SELECT
变体,请注意某些列表达式可以是常量或表达式,如CONVERT(DATE,SYSDATETIME())
,它们不依赖于源表。您的陈述的正确版本将是:
INSERT INTO [dbo].[OrganizationControlGroup]
SELECT TOP 450
o.OrganizationId,
9999,
NULL,
CONVERT(DATE,SYSDATETIME()),
NULL,
CONVERT(DATE,SYSDATETIME())
FROM Organization o
WHERE NOT EXISTS
(
SELECT *
FROM OrganizationControlGroup c
WHERE c.OrganizationId = o.OrganizationId
)
INSERT
的文档位于:http://msdn.microsoft.com/en-us/library/ms174335.aspx