2013-04-08 101 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