逗号分隔字段在mysql中进行比较

时间:2016-04-28 05:58:39

标签: mysql sql

我搜索了很多,但找不到答案。这是我的问题 我有一个名为main_table的表,如下所示:

╔════╦════════════════╦
║ id ║    seat_id     ║
╠════╬════════════════╬
║  1 ║   274115,      ║
║  2 ║  274116,274117,║ 
║  3 ║ 274113,274114, ║
╚════╩════════════════╩

这些seat_id是另一个名为sub_table的表的主键

╔═════════╦════════════════╦
║ seat_id ║    seat        ║
╠═════════╬════════════════╬
║  274115 ║     186        ║
║  274116 ║     187        ║ 
║  274117 ║     188        ║
║  274118 ║     159        ║
╚═════════╩════════════════╩

我想要所有与main_table的seat_id相关的座位

╔════════════╗
║    seat    ║
╠════════════╣
║    186     ║
║    187     ║
║    188     ║
╚════════════╝

到目前为止我尝试过的是子查询

select seat from sub_table where seat_id in(select seat_id from main_table)  

那没有帮助我

2 个答案:

答案 0 :(得分:1)

您可以使用FIND_IN_SET

SELECT seat
FROM sub_table AS t1
WHERE EXISTS (SELECT 1
              FROM main_table AS t2
              WHERE FIND_IN_SET(t1.seat_id, t2.seat_id) <> 0)

但是,我建议对表main_table进行规范化,因为将逗号分隔值存储在单个字段中总是一个坏主意。

Demo here

答案 1 :(得分:1)

首先,你没有规范你的表,所以你不能使用连接    和查询你使用“从main_table选择seat_id” - &gt;不是数组。 尝试传递数组

select seat from sub_table where seat_id in($array)