admin

需要有关SQL查询的帮助以查找带有大多数指定标签的内容

sql

假设我有以下表格:

TAGS
id: integer
name: string

POSTS
id: integer
body: text

TAGGINGS
id: integer
tag_id: integer
post_id: integer

我将如何编写查询,以按包含以下标签(标签表的名称属性)数量最多的帖子的顺序选择所有帖子 “Cheese”, “Wine”, “Paris”, “Frace”, “City”, “Scenic”, “Art”


阅读 278

收藏
2021-05-10

共1个答案

admin

与链接的问题不同,您在此处没有指定需要匹配所有标签的地方。该查询适用于ANY。

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
2021-05-10