1. 应用情境
想把order_records表中的所有记录的doctor_id都改成doctor_name对应的医生id(在doctor表中)。
update order_records set doctor_id =
(select id from doctor where doctor.doctor_name =order_records.doctor_name);
P.S. doctor_name非order_records表的外键,即非doctor表的主键,但当前默认唯一。
2. Error分析
子查询返回1条以上的结果,而主查询只能接受一条返回(set xx = ...)。(主查询的一条记录对应子查询多条记录产生错误)
3. 解决办法
update order_records set doctor_id =
(select id from doctor where doctor.doctor_name =order_records.doctor_name LIMIT 1);
用 LIMIT 1 限定只返回匹配的第一个结果。
————————————————
版权声明:本文为CSDN博主「__寒烟柔°」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41110292/article/details/90486121