鉴于以下sql fiddle http://sqlfiddle.com/#!9/68b56,我有以下表格:
o_pois
id
和
o_routes
id
pois
o_routes 表中的pois
列是一个字符串,其中包含用逗号(,)分隔的po的ID,例如100,98,99,101,103,102
我试图运行以下查询:
select o_pois.* from o_pois
inner join o_routes on o_pois.id IN (o_routes.pois)
where o_routes.id = 21
但是,只返回o_pois.id = 100.
我希望结果就像我运行此查询一样:
select o_pois.* from o_pois
inner join o_routes on o_pois.id IN (100,98,99,101,103,102)
where o_routes.id = 21
有谁知道如何处理这个问题?
答案 0 :(得分:1)
此:
IN (o_routes.pois)
以
执行IN ('100,98,99,101,103,102')
这是一个单一的字符串/值。它是 NOT 执行
IN('100','98','99','101','103','102')
正如你所想的那样。
您应该规范化表格。将csv值存储在单个字段中通常是设计不良的标志。