我搜索了很多,但找不到答案。这是我的问题 我有一个名为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)
那没有帮助我
答案 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
进行规范化,因为将逗号分隔值存储在单个字段中总是一个坏主意。
答案 1 :(得分:1)
首先,你没有规范你的表,所以你不能使用连接 和查询你使用“从main_table选择seat_id” - &gt;不是数组。 尝试传递数组
select seat from sub_table where seat_id in($array)