需要sql查询帮助来查找具有最多指定标签的内容

假设我有以下表格:

TAGS

id:整数
name:string

post

id:整数
主体

引用的Tagging

id:整数
tag_id:整数
post_id:整数

我将如何编写一个查询,按照包含最多数量的以下标记的post的顺序选择所有post(标签表的名称属性):“Cheese”,“Wine”,“Paris”,“Frace”,“城市“,”风景“,”艺术“

另请参阅: 需要有关sql查询的帮助以查找标记有所有指定标记的内容 (注意:类似,但不重复!)

与链接的问题不同,您没有在此指定您需要匹配所有标记。 此查询适用于任何人。

SELECT p.id, p.text, count(tg.id) as TagCount FROM Posts p INNER JOIN Taggings tg ON p.id = tg.post_id INNER JOIN Tags t ON tg.tag_id = t.id WHERE t.name in ('Cheese', 'Wine', 'Paris', 'Frace', 'City', 'Scenic', 'Art') GROUP BY p.id, p.text ORDER BY TagCount DESC 

试试这个:

  Select p.Id, p.Text, Count(*) From Posts p Left Join (Taggings tg Join Tags t On t.Tag_Id = tg.Tag_Id And t.name in ('Cheese', 'Wine', 'Paris', 'Frace', 'City', 'Scenic', 'Art')) On tg.Post_Id = p.Post_Id Group By p.Id, p.text Order By Count(*) Desc