Mysql子查询无法正常使用列中的逗号分隔值

时间:2017-04-03 03:10:30

标签: mysql

这可能是直截了当的,但请耐心等待。

我有一个mysql表 Mapdetail ,其中resultTypeIds列存储以逗号分隔的ID列表

MapDetails

=============================

mapheaderid | resultTypeIds

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)

1 个答案:

答案 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))