SQL UPDATE:子查询返回的值超过1

时间:2013-04-08 16:53:42

标签: sql sql-server

我在使用此更新声明时遇到问题。我不确定如何重新表达它,以便对于“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。

谢谢!

2 个答案:

答案 0 :(得分:2)

这样做:

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

由于您使用的是同一个表,因此不需要FROM子句。

以下是使用数据的SQL小提琴:http://sqlfiddle.com/#!6/238dd/2

它运作得很好。

答案 1 :(得分:1)

只是删除“from”子句行,如果这实际上是您正在使用的查询。