2010-09-08 124 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);