MySQL---Subquery returns more than 1 row

例如:
select * from user_facility 
where user_id = 60040012 
and facility_id =
(select facility_id from scene_facility_room where room_id = 5);

会报错 Subquery returns more than 1 row

原因:

因为使用的字段使用的=,只符合select语句只查出一条记录的情况。
如果查出的记录是多条记录,这时上述语句会报Subquery returns more than 1 row

解决:

有两种方法

  1. 语句中的 = 换成 in,如下:
select * from user_facility 
where user_id = 60040012 
and facility_id in
(select facility_id from scene_facility_room where room_id = 5);
  1. 语句中 = 后面加 any,如下:
select * from user_facility 
where user_id = 60040012 
and facility_id =
any (select facility_id from scene_facility_room where room_id = 5);

你可能感兴趣的:(MySQL,mysql,数据库,database)