如何解决PostgreSQL,如何解决由用作表达式的子查询返回的多行错误
Update person set institution_v2 = (select dv.entity_id
from dictionary_v2 dv
left join dictionary_entry_v2 dev on dev.dictionary_id = dv.id
left join person p on p.name = dev.entry_value
JOIN journal_person_relation jpr on jpr.person_id = p.person_id
JOIN journal j on jpr.journal_id = j.journal_id)
但是它失败了: sql错误[21000]:错误:用作查询的子查询返回的一行以上
我该如何解决这个问题?
解决方法
大概您打算使用相关子查询。因此,请勿在子目录中重复使用person
:
update person p
set institution_v2 = (select dv.entity_id
from dictionary_v2 dv join
dictionary_entry_v2 dev
on dev.dictionary_id = dv.id
where p.name = dev.entry_value
);
注意:此可以仍返回重复项。单个值可能不适用于该列-也许您想要一个数组-或者,如果任意匹配的值有效,请使用limit 1
。
我不认为日记帐表会增加任何逻辑。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。