例如:
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
解决:
有两种方法
- 语句中的 = 换成 in,如下:
select * from user_facility
where user_id = 60040012
and facility_id in
(select facility_id from scene_facility_room where room_id = 5);
- 语句中 = 后面加 any,如下:
select * from user_facility
where user_id = 60040012
and facility_id =
any (select facility_id from scene_facility_room where room_id = 5);