这可能是直截了当的,但请耐心等待。
我有一个mysql表 Mapdetail ,其中resultTypeIds列存储以逗号分隔的ID列表
MapDetails
=============================
54 | 1,4,-9999
现在,当我尝试将其作为子查询时,它不会返回正确的结果,而如果我硬编码(1,4,-9999)它可以正常工作
错误 - 仅返回1行
select * from resulttypes rt where rt.resulttypeid in
(select md1.resulttypeids from mapdetail md1
where md1.mapheaderid = 54)
正确 - 返回2行
select * from resulttypes rt where rt.resulttypeid in (1,4,-9999)
答案 0 :(得分:2)
如果您无法重新构建数据库(如评论中所述)。尝试使用FIND_IN_SET
代替IN
尝试类似:
select * from resulttypes rt where FIND_IN_SET (rt.resulttypeid,
(select md1.resulttypeids from mapdetail md1
where md1.mapheaderid = 54))