2014-01-30 4 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

Ваш синтаксис неверен. Вы можете использовать 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

+0

Спасибо, что мне нужно. –

+2

@AntarrByrd И почему бы вам не пометить его как ответ? – GoRoS

+0

@GoRoS Извините Отвлекшись –

Смежные вопросы