3

我在使用此更新声明时遇到问题。我不确定如何重新表述它,以便对于我的“in”语句中的每个项目,它将规则 ID 更新为 109。

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

这失败了,并给了我以下错误:

消息 512,级别 16,状态 1,过程 CLID_Hist,第 17 行
子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
该语句已终止。

我很感激有人的帮助。对于给定的 ItemID 列表,我想将 RuleID 更新为 109。

谢谢!

4

2 回答 2

2

做这个:

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

您不需要该FROM子句,因为您使用的是同一张表。

这是使用数据的 SQL Fiddle:http ://sqlfiddle.com/#!6/238dd/2

它工作得很好。

于 2013-04-08T16:57:01.800 回答
1

只需摆脱“from”子句行,如果这就是您正在使用的查询。

于 2013-04-08T16:58:49.977 回答