我有这样的事情:
UPDATE table set new_id=(SELECT distinct t2.new_id
FROM table t1
inner join (SELECT hn.id,max(hn.id) OVER (PARTITION BY first_name,MIDDLE_NAME,last_name) AS new_id
from table)t2
on t1.id=t2.id);
这个查询给我一个错误,说明单行子查询返回多行。
请帮我解释如何更新new_id值的语法
答案 0 :(得分:0)
错误告诉您确切的问题:"子查询返回多行":
UPDATE table set new_id=(SELECT distinct t2.ne
^---
子查询可以/将返回多行,并且由于您在相等上下文(=
)中使用它,因此不会被执行。如果返回多个不同的值/行,则必须使查询真正返回一行/一个值,或切换到IN
查询。 IN
选项无法使用,因为您在UPDATE中使用了多个值,因此将子查询限制为单行是您唯一的选择。