我有一个包含 3 个表的数据库
具有以下字段的文章: id:int 名称:varchar(255) 文本:文本
带有字段的标记:id:int 名称:varchar(255))
article_tag 的字段: id: int article_id: int (foreign key => article.id) tag_id: int (foreign key => tag.id)
我希望能够查找与多个标签关联的文章。
如果我做:
SELECT article.name FROM article
JOIN article_tag ON article.id = article_tag.article_id
JOIN tag ON tag.id = article_tag.tag_id
WHERE tag.name IN ('science', 'technology', ... );
我取回每篇文章*(它拥有的标签数量);这是意料之中的。
我的问题:有没有办法改进它,以便它按 article.id 频率的降序列出(效果是它匹配的请求标签越多,它在列表中的位置就越高)或者它只返回记录匹配所有标签(结果中出现的次数=标签数)。
谢谢,对不起,这个问题的格式没有更好