2010-09-08 127 views
0

我在使用嵌套select的INSERT语句时遇到问题。在SQLManagement Studio中执行查询时,查询起作用,但在代码中执行时会返回错误。使用SqlCommand插入选择子查询

查询看起来像:返回

INSERT INTO [Projects] 
    VALUES ('1', 'None', '2', '2010/09/08 10:36:30 AM', 4, 1, 4, '6', '', 'n/a', 'no', 'n/a', 'None', 0, 'n/a', 'n/a', 'no', 'A3', 'no', 'Blnk', 'aa', 
    (SELECT status.statusID from status where name = 'STOPPED') 

错误:

Subqueries are not allowed in this context. Only scalar expressions are allowed 

对此有一个解释,以及如何会去,因为我不解决这个问题除了执行单独的选择查询之外,还要知道Status的id是什么?

回答

3

你可以试试这个...

INSERT INTO [Projects] 
SELECT '1', 'None', '2', '2010/09/08 10:36:30 AM', 4, 1, 4, '6', '', 'n/a', 'no', 'n/a', 'None', 0, 'n/a', 'n/a', 'no', 'A3', 'no', 'Blnk', 'aa', 
status.statusID from status where name = 'STOPPED' 

该错误是有道理的,因为你可以有从子查询多行。在我的建议中,你也可以结束多行。应该有更多的过滤器?

+0

谢谢,现在我明白了为什么错误被抛出,没有任何其他东西可以过滤。我有点假设,选择只会返回1值 – fluf 2010-09-08 09:09:34

+0

真棒这个作品完美谢谢 – fluf 2010-09-08 09:18:32

1

最好的方法是创建存储过程。

declare @statusID int; 

SELECT @statusID=status.statusID from status where name = 'STOPPED' 

INSERT INTO [Projects] 
    VALUES ('1', 'None', '2', '2010/09/08 10:36:30 AM', 4, 1, 4, '6', '', 'n/a', 'no', 'n/a', 'None', 0, 'n/a', 'n/a', 'no', 'A3', 'no', 'Blnk', 'aa',@statusID);