2014-01-30 119 views
0

我试图从我的select语句中插入行。但是我在语句中的第一个FROM处出现语法错误。我究竟做错了什么?从选择中插入SQL Server

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 
     ) 
    ) 

回答

6

您的语法错误。您可以使用INSERTVALUES以及一个(或更新的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

+0

谢谢这就是我所需要的。 –

+2

@AararrByrd为什么你不把它标记为答案呢? – GoRoS

+0

@GoRoS对不起,分心了 –