MySQL - 内部联接使用IN无法正常工作

时间:2015-07-08 15:10:46

标签: mysql

鉴于以下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

有谁知道如何处理这个问题?

1 个答案:

答案 0 :(得分:1)

此:

IN (o_routes.pois)

执行
IN ('100,98,99,101,103,102')

这是一个单一的字符串/值。它是 NOT 执行

IN('100','98','99','101','103','102')

正如你所想的那样。

您应该规范化表格。将csv值存储在单个字段中通常是设计不良的标志。