2
我需要一种有效的方法来选择至少具有标签“Tag1”和“Tag2”的所有文章。 这是非标准的方式有以下数据库模式:使用MySQL中的一组标签获取所有文章的有效方法
articles(id, title)
article_tag(articleid, tagid)
tag(id, name)
SELECT a.*
FROM article a
INNER JOIN (SELECT at.articleid
FROM article_tag at
INNER JOIN article a
ON a.id = at.articleid
INNER JOIN tag t
ON t.id = at.tagid
WHERE t.name IN ("Tag1","Tag2")
GROUP BY at.articleid
HAVING Count(at.articleid) = 2) aa
ON a.id = aa.articleid
有没有一种更有效的方式表现明智?
您对标签的最大数量有任何限制吗? – 2011-12-23 21:28:29
不,没有最大限制,但最小值为两个标签 – evodevo 2011-12-23 21:37:20
您可以在子查询中删除与文章表的连接。 – DavidEG 2011-12-23 21:47:17