在同一个表中将数据从一列复制到另一列 - 子查询返回的值超过1

时间:2017-05-31 16:19:03

标签: sql sql-server

我有一个这种格式的表:

a   |   b
----------
12.1| NULL
6.4 | NULL
55.5| NULL

我想简单地将值从over复制到b。

我已经回顾了这个问题的其他答案,看来人们可以通过一个简单的查询来做到这一点:

UPDATE table
SET b = a

但是,这会产生以下错误:

  

子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。   声明已经终止。

我的数据库中是否需要检查哪些内容无效?我可以或应该使用替代查询吗?

1 个答案:

答案 0 :(得分:3)

我敢打赌你的桌子有一个更新的触发器,那个触发器就是造成这个问题的原因 事实是sql server中的触发器是按语句引发的,而不是每行引发的。 这意味着对于您提供的示例数据,update语句将生成一个包含3条记录的插入表。 我会在你的触发器中打赌你做这样的事情:

select @localVariable = a from inserted.

这就是造成这个问题的原因。