aaa 表
id | uid |
---|---|
1 | 1,2,3 |
2 | 2,1,3 |
3 | 3,2,1 |
bbb 表
id | name |
---|---|
1 | 张三 |
2 | 李四 |
3 | 王五 |
查询aaa表对应的名字, 一般业务场景有, 部门分割, 审批人分割, 商品规格分割
sql 语句
SELECT
a.id,a.uids,GROUP_CONCAT( b.name ORDER BY FIND_IN_SET(b.uid, a.uids) SEPARATOR '-' ) as names
FROM
aaa a
LEFT JOIN bbb b ON FIND_IN_SET(b.uid, a.uids)
GROUP BY a.id
备注:
GROUP_CONCAT (字段 排序 分割符)
GROUP_CONCAT( b.name SEPARATOR '-' ) // 默认正序
GROUP_CONCAT( b.name ORDER BY b.uid desc SEPARATOR '-' ) // 倒序
GROUP_CONCAT( b.name ORDER BY FIND_IN_SET(b.uid, a.uids) SEPARATOR '-' ) as names // 自定排序, 符合业务场景
这种方式查询出的结果为并集, 所以需要 group by , 搜索可以加上 having