MySQL按计数排序?

10

我在数据库中设置了一个带有以下结构的表:

table-structure

我通过while循环运行查询,并想按照prof列的计数进行排序。

这是我的查询目前的样子,但我一直收到错误提示。

$order_list = mysql_query("
    SELECT COUNT(prof), 
    FROM prof_rating 
    ORDER BY COUNT(prof) ASC");

我一直收到的警告是这个:

警告:mysql_fetch_assoc()期望参数1为资源类型,但实际得到的是布尔类型。

2个回答

18

说句题外话,在select列表中使用聚合函数意味着结果集只会有一行。对只有一行的结果集进行排序没有什么意义。

如果你想要获取每个不同prof值的评分数量,请使用以下方法:

$order_list = mysql_query("
    SELECT prof, COUNT(*) AS PROFCOUNT, 
    FROM prof_rating 
    GROUP BY prof
    ORDER BY PROFCOUNT ASC'");

这将输出多行数据,每个 prof 值对应一行,并给出每个 prof 值的行数统计。


感谢您的建议。我意识到问题的核心是,我的mysql_query中有一个额外的',这导致了警告消息。我一开始竟然没注意到它,真是难以置信。 - Jako

6

给列名取一个别名,然后将其放入 order by 子句中 :)

$order_list = mysql_query("
SELECT COUNT(prof) AS PROFCOUNT, 
FROM prof_rating 
ORDER BY PROFCOUNT ASC'");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接