【发布时间】:2013-05-24 13:24:26
【问题描述】:
当我运行下面的 sql 更新语句时
update logins
set active = 0
where loginlast is null
我得到以下内容
子查询返回超过 1 个值。这是不允许的,当 子查询遵循 =、!=、、>= 或当子查询用作 一个表达式。
关于我为什么会收到此错误的任何想法?
【问题讨论】:
-
您的示例中没有子查询,或者我误解了什么......
-
这个查询没有问题。
-
发布您的完整代码,错误指出的地方应该有一个子查询。另外,正确标记您的问题,您使用的是哪种 RDBM,MySQL、MS SQL Server、Oracle?
-
可能你有一个更新触发器,它期望更新只影响一行。
-
@MartinSmith,你应该把这个作为答案,这样你就可以得到它的荣誉。我会说你是对的大约有 99.9% 的机会。人们似乎并不明白 SQL Server 中的所有触发器总是需要编写来处理一组数据,而不是一次处理一条记录。对于 OP,problelm 很可能是他们将字段的值设置为触发器中的标量变量。
标签: sql sql-server