我是 sql 的新手,我遇到了一个问题。
我必须根据三列中的值更新最近添加的列。如果与其他表中的对应列相同,则必须根据其他表中的值更新此列。
这是我到目前为止所尝试的
update a
set a.id = ( select top 1 b.id from OtherTable b
where b.k='Doz' and b.year = a.year and b.number = a.number)
from ThisTable a
这是错误消息:
子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
如果我使用前 1 行,怎么可能不止一行?
我的另一个尝试:
update a
set a.id = b.id
from ThisTable a
inner join OtherTable b
on b.k = 'Doz' and a.year = b.year and a.number = b.number
问题依然存在。
如果我做:
select b.id
from ThisTable a
inner join OtherTable b
on b.k = 'Doz' and a.year = b.year and a.number = b.number
我看到所有应该更新的 ID。当我为列添加带有指定值的 where 子句时,我只得到一条记录,而不是多条记录。
我究竟做错了什么?请帮忙