使用多个条件更新sql中的表

时间:2010-12-18 22:42:35

标签: tsql

如果我有一个带有a,b和c列的表MyTable,它们是整数。鉴于我想根据b和c的值更新所有'a'。

Update MyTable set a = 2 where b = 1 and c = 1

现在为时已晚,我不能为我的生活看到为什么这句话不起作用,我错过了一些愚蠢的事情吗?

编辑,woops,忘记了错误。

“子查询返回的值超过1。当子查询跟随=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。”

Edit2:这是我使用的确切查询(不同的列名)。事实证明桌子上有一个触发器被打破了。我现在觉得有点傻,但不管怎样,谢谢你的帮助:)。

1 个答案:

答案 0 :(得分:3)

您发布的声明没有错。错误发生在其他地方。

您是否发布了错误的查询?或许你过度简化了它?子查询看起来像这样:

UPDATE MyTable
SET a = 2 
WHERE b = 1 AND c = (SELECT c FROM MyTable2 WHERE id = 5)
                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <--- subquery

可能提供错误消息的无效查询可能如下所示:

UPDATE MyTable
SET a = 2 
WHERE b = 1 AND c = (SELECT c, d FROM MyTable2 WHERE id = 5)

第二个查询无效,因为它返回两个值,但=运算符只允许与单个值进行比较。

解决方案是确保在相等比较中使用的所有子查询仅返回由单个列组成的单个行。