我有3个表:文章,标签和article_tag (连接它们的那个)。
我想查找查询中列出了部分(或全部)标签的所有文章,并根据匹配标签的数量对它们进行排序。有可能吗?
英文示例:
Query: Find me all articles that have at least one of these tags "jazz, bass guitar, soul, funk", order them by the number of matched tags.
Output:
Article 1 (jazz, bass-guitar, soul, funk)
Article 2 (jazz, bass-guitar, soul)
Article 3 (jazz, bass-guitar)
Article 4 (funk)发布于 2010-02-11 06:52:03
可能是这样的:
select articles.article_id, count(tags.tag_id) as num_tags, group_concat(distinct tag_name separator ',') as tags
from articles, article_tag, tags
where articles.tag_id = article_tag.tag_id
and article_tag.tag_id = tags.tag_id
and tags.tag_name in ( 'jazz', 'funk', 'soul', 'Britney Spears' )
group by articles.article_id
order by count(tags.tag_id) desc发布于 2010-02-11 06:51:48
select a.* from articles a,
(select article_id, count(*) cnt from article_tag at, tag t
where t.name in ('jazz', 'bass-guitar', 'soul', 'funk')
and at.tag_id = t.tag_id
group by article_id) art_tag
where a.article_id = art_tag.article_id
order by art_tag.cnt deschttps://stackoverflow.com/questions/2240902
复制相似问题