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。我不认为日记账表会给逻辑增加任何东西。

相关内容

  • 没有找到相关文章

最新更新