我在mysql中有两个表 一个tbl_a,它有一个int列id, 第二个tbl_b,它有一个列song_ids,其中存储的数据用逗号分隔,如1,2,3,4
我想选择所有这样的ID
select * from tbl_a where id in (select song_id from tbl_b)
但它没有给我作为varchar的记录 如何在mysql中完成
答案 0 :(得分:2)
正确的方法:
更改数据库结构;它没有正常化。您应该在tbl_a和tbl_b之间有一个链接表,其中有两个字段:a_id
和b_id
。然后使用如下的查询:
SELECT * FROM tbl_a
INNER JOIN tbl_link ON tbl_link.a_id = tbl_a.id
INNER JOIN tbl_b ON tbl_b.id = tbl_link.b_id
懒惰,错误的方式:
SELECT * FROM tbl_a INNER JOIN tbl_b
WHERE FIND_IN_SET(tbl_b.song_id, tbl_a.id)
答案 1 :(得分:0)
这是错误的数据库设计。 tbl_b必须有2列,a_id和song_id都是int类型
对于查询,您必须提供有关表关系的更多详细信息
答案 2 :(得分:0)
在解决此问题之前,我会考虑重新设计表格。为什么dela带有逗号分隔数据的头痛?