我有下表和附加的列。
tags
-t_id (PRIMARY)
-pg
tag_refs
-t_id
-bp_id
现在我尝试编写一个MySQL查询,返回按照它们的流行程度排序的标签总数 - 在这种情况下,它表示在tag_refs表中表示唯一t_id的次数。
我认为这将是一个连接查询,它必须从tags表返回一个列表,我可以使用pg列输出每个标记的名称/标题只有一次,排序的次数最多。< / p>
我尝试了以下查询,该查询只返回一行,但似乎按照我想要的顺序进行排序。
SELECT *
FROM tags
JOIN tag_refs ON tags.t_id = tag_refs.t_id
ORDER BY COUNT(tag_refs.t_id) DESC
答案 0 :(得分:3)
您应该在SELECT中进行聚合,如下所示:
SELECT tags.pg, COUNT(tag_refs.t_id) AS tag_count
FROM tags INNER JOIN tag_refs ON tags.t_id = tag_refs.t_id
GROUP BY tag.pg
ORDER BY tag_count DESC
答案 1 :(得分:2)
你错过了Group by
条款
SELECT
tag_refs.t_id, COUNT(tag_refs.t_id)
FROM
tags
JOIN
tag_refs
ON
tags.t_id = tag_refs.t_id
group by tag_refs.t_id
ORDER BY
COUNT(tag_refs.t_id)
DESC
阅读一些关于此条款here
的内容