Mysql标签查询 - 重复值

时间:2010-12-24 17:57:20

标签: mysql

我正在进行基于标签的搜索。用户可以搜索一个标签或多个标签。我有3个表:内容,Content_Tags和标签。 Content_Tags执行内容和标记之间的链接。查询必须返回检索到的内容的所有信息,这包括来自该内容的所有标记的串联字符串。

使用其他问题的示例我已设法达到此查询:

SELECT content.Name,GROUP_CONCAT(t2.Tag SEPARATOR ' ') FROM content 
JOIN content_tags ct1 ON content.ContentID = ct1.ContentID 
JOIN tags t1 on ct1.TagID = t1.TagID AND t1.Tag IN('grass','texture') 
JOIN content_tags ct2 ON ct2.ContentID = content.ContentID JOIN tags t2 ON ct2.TagID = t2.TagID GROUP BY content.ContentID;

查询1标签时查询工作正常,但使用IN('grass','texture') GROUP_CONCAT将返回草草纹理纹理' (重复标签)。 我不太了解MySQL,我怎么能解决这个问题?

1 个答案:

答案 0 :(得分:0)

SELECT  content.name,
        (
        SELECT  GROUP_CONCAT(cta.tag)
        FROM    content_tags cta
        WHERE   cta.contentID = ct.contentID
        )
FROM    content_tags ct
JOIN    content c
ON      c.contentId = ct.contentId
WHERE   ct.tag IN ('grass', 'texture')
GROUP BY
        ct.contentId
HAVING  COUNT(*) = 2