【问题标题】:SQL Server Update Error - "Subquery returned more than 1 value"SQL Server 更新错误 - “子查询返回超过 1 个值”
【发布时间】: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


【解决方案1】:

正如 Martin Smith 在 cmets 中所说:

可能您有一个更新触发器,它期望更新只影响一行

是的,没有子查询,但是 SQL server 报错, 因为触发器有子查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多