我正在尝试输出由值和名称列表组成的行。这是我的问题:
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
。我不认为日记账表会给逻辑增加任何东西。