【MySQL】Error Code: 1242. Subquery returns more than 1 row 的分析与解决

怼烎@ 2023-09-29 15:18 39阅读 0赞
  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表的主键,但当前默认唯一。

  1. Error分析
    子查询返回1条以上的结果,而主查询只能接受一条返回(set xx = …)。(主查询的一条记录对应子查询多条记录产生错误)

  2. 解决办法
    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

发表评论

表情:
评论列表 (有 0 条评论,39人围观)

还没有评论,来说两句吧...

相关阅读