我在使用此更新声明时遇到问题。我不确定如何重新表达它,以便对于“in”语句中的每个项目,它将规则ID更新为109.
UPDATE mytable
SET RuleID = 109
WHERE mytable.ItemId in (534157, 534154);
此操作失败并给出以下错误:
Msg 512,Level 16,State 1,Procedure CLID_Hist,Line 17
子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。
声明已经终止。
我很感激别人的帮助。对于给定的ItemID列表,我想将RuleID更新为109。
谢谢!
答案 0 :(得分:2)
这样做:
UPDATE mytable SET RuleID = 109 WHERE ItemId IN (534157, 534154);
由于您使用的是同一个表,因此不需要FROM
子句。
以下是使用数据的SQL小提琴:http://sqlfiddle.com/#!6/238dd/2
它运作得很好。
答案 1 :(得分:1)
只是删除“from”子句行,如果这实际上是您正在使用的查询。