mysql FIND_IN_SET()用分号代替逗号

时间:2014-12-29 07:36:47

标签: php mysql

我有一个看起来像这样的数据库

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

1 个答案:

答案 0 :(得分:5)

您可以替换逗号:

FIND_IN_SET(b.id ,REPLACE(a.forDepts, ';', ',') )