2013-09-10 4 views
0

Я хочу, чтобы запустить этот запросSQL вставки в с подзапроса

INSERT INTO [tblPollLogs] 
      ([lastModified] 
      ,[ip] 
      ,[a1] 
      ,[a2] 
     ) 
    VALUES 
      (getdate() 
      ,'aaa' 
      ,(select top 1 header from [tblPollAnswer] where [pollAnswerId] = @param1) 
      ,(select top 1 header from [tblPollAnswer] where [pollAnswerId] = @param2)   
     ) 

Но я получаю ошибку

подзапросы не разрешены в этом контексте. Разрешены только скалярные выражения.

может я выполнить этот запрос в одном запросе или мне нужно получить значения перед запуском этого запроса

Thanks

+1

В SQL Server 2008+ там находятся подзапросы. BTW: Почему вы используете 'top 1' без' order by'? Если имеется несколько совпадающих строк, то не определено, что будет вставлено, и если имеется не более одной соответствующей строки, вам не нужна «верхняя 1». –

ответ

4

Попробуйте изменить его insert...select ниже

INSERT INTO [tblPollLogs] 
      ([lastModified] 
      ,[ip] 
      ,[a1] 
      ,[a2] 
     ) 
select getdate(), 
     'aaa', 
     (select top 1 header from [tblPollAnswer] where [pollAnswerId] = @param1), 
     (select top 1 header from [tblPollAnswer] where [pollAnswerId] = @param2)   
Смежные вопросы