我有一个看起来像这样的数据库
Table: Notes
nid | forDepts
--------------
1 | 1;2;4
2 | 4;5
Table: Positions
id | name
--------------
1 | Executive
2 | Corp Admin
3 | Sales
4 | Art
5 | Marketing
如果forDepts
中的数据被逗号分隔
SELECT a.nid,
GROUP_CONCAT(b.name ORDER BY b.id) DepartmentName
FROM Notes a
INNER JOIN Positions b
ON FIND_IN_SET(b.id, a.forDepts) > 0
GROUP BY a.nid
有没有办法将它与分号分隔符匹配?或者有更好的方法吗?我的桌子都很大(5336和930行)。
我可以执行2次查询,并按;
进行展开并相应地匹配,但如果有更好的方法可以在单个查询中完成,那就太棒了。
这是我的sqlfiddle
答案 0 :(得分:5)
您可以替换逗号:
FIND_IN_SET(b.id ,REPLACE(a.forDepts, ';', ',') )