Mysql标记查询-重复值

Mysql标记查询-重复值,mysql,Mysql,我正在做一个基于标签的搜索。用户可以搜索一个标记或多个标记。我有3个表格:内容、内容标签和标签。Content_标记在内容和标记之间建立链接。查询必须返回检索到的内容的所有信息,这包括来自该内容的所有标记的串联字符串 使用另一个问题中的一个例子,我成功地实现了这个查询: SELECT content.Name,GROUP_CONCAT(t2.Tag SEPARATOR ' ') FROM content JOIN content_tags ct1 ON content.ContentID =

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

使用另一个问题中的一个例子,我成功地实现了这个查询:

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个标记时,查询工作正常,但是使用('grass','texture')中的
组将返回'grass-grass-texture-texture'(重复标记)。
我对MySQL不太了解,如何解决这个问题?

该查询起初不起作用,但经过一些修改后,我得到了我想要的。谢谢(如果有一种方法可以使用连接而不是子查询,这对性能来说是很好的)Jorge:对于这个查询,子查询在性能方面比
连接
更好。只需在
content\u标记(ContentID,tag)
上创建一个
UNIQUE
索引。
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