2014-01-30 79 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對不起,分心了 –