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

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

你可能感兴趣的:(MySql。)