MySQL:逗号分隔值(CSV)

时间:2016-02-19 07:52:49

标签: mysql

我目前有两个表,如下面

1。 tbl_forums

struct sigaction sa;
...
sigaction(SIGINT, &sa, NULL);
   uid   catid  tags  

2。 tbl_forum_tags

 1       3  1,2,,3  
 2       6  1,2,,3  
 3       5  8       
id  tag      isactive  

我想检索以下格式的数据

 1  Tag 1    y         
 2  Tag 2    y         
 3  Tag 3    y         
 4   kuldip  y         
 5   bhatt   y         
 6           y         
 7           y         
 8           y         
uid  tag      

感谢任何帮助

3 个答案:

答案 0 :(得分:0)

使用函数FIND_IN_SET()匹配JOIN:

SELECT f.uid, GROUP_CONCAT(t.tag) tag
FROM tbl_forums f, tbl_forum_tags t
WHERE FIND_IN_SET(t.id, f.tags) <> 0
GROUP BY f.uid;

答案 1 :(得分:0)

你需要一些替换和连接:

SELECT * FROM tbl_forums 
LEFT JOIN tbl_forum_tags ON CONCAT(',', tags, ',') LIKE CONCAT('%,', REPLACE(tag,'Tag ',''), ',%')

答案 2 :(得分:-3)

您可以使用FIND_IN_SET()&gt; 0和GROUP BY匹配它们:

SELECT
    t.uid,
    group_concat(tt.tag) AS tags
FROM
    tbl_forums t,
    tbl_forum_tags tt
WHERE
    FIND_IN_SET(tt.id, t.tags) > 0
GROUP BY
    t.uid
HAVING tags IS NOT NULL

如果您只想要具有有效标签的ID,请在末尾添加NOT NULL:

{{1}}