2013-04-08 100 views
2

我遇到此更新語句的問題。我不知道如何重新短語它使每個項目在我的「in」語句,它更新規則ID以109SQL更新:子查詢返回多個值

UPDATE mytable 
SET RuleID = 109 
WHERE mytable.ItemId in (534157, 534154); 

這個失敗,使我有以下錯誤:

Msg 512, Level 16, State 1, Procedure CLID_Hist, Line 17
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.

我很感謝別人的幫助。對於給定的ItemID列表,我想要將RuleID更新爲109.

謝謝!

+7

什麼是'CLID_Hist'程序?此表上是否有觸發器針對每個更新運行?這個陳述本身不應該引起任何麻煩...... – 2013-04-08 17:02:17

+0

沒錯,這個查詢應該可以工作。你是否試圖執行超過這個查詢? – 2013-04-08 17:03:57

+2

同意上面的海報,這個SQL,因爲你目前在你的問題中應該工作正常。檢查有問題的表是否有觸發器。 – Cortright 2013-04-08 17:06:31

回答

2

這樣做:

UPDATE mytable SET RuleID = 109 WHERE ItemId IN (534157, 534154); 

,因爲你與同桌的工作你不需要FROM條款。

這裏的SQL撥弄數據發揮:http://sqlfiddle.com/#!6/238dd/2

它的工作就好了。

+0

謝謝。我刪除了我在原始文章中的隨機子句,並且在使用更新語句時出現同樣的錯誤。 – user2258516 2013-04-08 17:01:39

1

只是擺脫了「從」條款行,如果這是字面上你正在使用的查詢。

+0

是啊,擺脫了... ... – user2258516 2013-04-08 17:02:19