从select插入SQL Server

时间:2014-01-30 20:44:55

标签: sql sql-server insert

我正在尝试从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
        )
    )

1 个答案:

答案 0 :(得分: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