首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL-用于查找至少具有一个列出的标记的文章的查询

SQL-用于查找至少具有一个列出的标记的文章的查询
EN

Stack Overflow用户
提问于 2010-02-11 06:45:31
回答 2查看 1.4K关注 0票数 0

我有3个表:文章,标签和article_tag (连接它们的那个)。

我想查找查询中列出了部分(或全部)标签的所有文章,并根据匹配标签的数量对它们进行排序。有可能吗?

英文示例:

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-11 06:52:03

可能是这样的:

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2010-02-11 06:51:48

代码语言:javascript
复制
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 desc
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2240902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档