从select插入SQL Server

Ant*_*yrd 0 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
        )
    )
Run Code Online (Sandbox Code Playgroud)

Fra*_*kPl 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
        )
Run Code Online (Sandbox Code Playgroud)

该文档INSERT位于:http://msdn.microsoft.com/en-us/library/ms174335.aspx

  • @AntarrByrd你为什么不把它标记为答案呢? (2认同)