假设我有以下表格:
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”
与链接的问题不同,您在此处没有指定需要匹配所有标签的地方。该查询适用于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