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