问题描述
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
。
我不认为日记帐表会增加任何逻辑。