我正在进行基于标签的搜索。用户可以搜索一个标签或多个标签。我有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,我怎么能解决这个问题?
答案 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