从 mysql 个规范化表中获取最受欢迎的标签

Get most popular tags from mysql normalized tables

我正在为我正在创建的论坛构建自己的标签系统。一切正常,但我试图回显最流行标签的列表,但我找不到要使用的查询..

我的 table 看起来像这样:

我需要一个 20 个最流行标签的列表,所以 tag_names 其中 tag_id 在 article_tag_xref table 中出现最多。任何知道查询应该是什么样子的人?谢谢!

您可以使用以下查询:

SELECT t.tag_id, t.tag_name, COUNT(article_id) AS cnt
FROM Article_Tag_Xref AS a
INNER JOIN Tag AS t ON a.tag_id = t.tag_id
GROUP BY t.tag_id, t.tag_name
ORDER BY COUNT(article_id) DESC LIMIT 20

COUNT(article_id) returns 每个 tag_igArticle_Tag_Xref table 中出现的次数。因此,按此计数降序排列并应用 LIMIT 20 returns 20 个最流行的 tag_ig 值。

以下应该适合您,因为您只询问了 tag_names 而没有计算。

SELECT tag_name 
FROM Tag
WHERE tag_id IN ( SELECT tag_id, COUNT(article_id)
                  FROM Article_Tag_Xref
                  GROUP BY tag_id
                  ORDER BY COUNT(article_id) DESC
                  LIMIT 20)

子查询 returns 前 20 个 tag_ids 及其计数。