按COUNT排序SQL

时间:2013-01-11 17:57:16

标签: mysql sql

我有下表和附加的列。

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

2 个答案:

答案 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

的内容