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

    xiaoxiao2022-07-13  152

    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 限定只返回匹配的第一个结果。

    最新回复(0)