按sum(value)sql排序

时间:2013-04-07 17:15:57

标签: mysql sum sql-order-by

我正在尝试从名为捐赠的表格中获取blog_id列表以及该博客ID上的捐款总额。而且我想通过捐款总额来订购它。基本上我想制作一份按捐款排名的博客列表。博客保存在blog_id引用的不同表中。

这是我一直在尝试的,但它所做的只是总结所有捐款并产生1排。我不明白我在这里做错了什么!

$donations_result = mysql_query("SELECT blog_id, sum(amount) FROM donations ORDER BY sum(amount)");

捐款表是一系列blog_ids和个人捐款。所以像这样:

blog_id - 捐赠
1 ---------- 26
1 ---------- 1
2 ---------- 24
2 ---------- 12

2 个答案:

答案 0 :(得分:3)

您没有对列进行分组。您需要按非聚合列对其进行分组,在本例中为blog_id

SELECT blog_id, sum(amount) TotalSum
FROM   donations 
GROUP  BY blog_id
ORDER  BY TotalSum

您的查询执行良好而不抛出异常的原因是因为mysql允许使用聚合函数而不在GROUP BY子句中指定非聚合列。

答案 1 :(得分:2)

您错过了GROUP BY运营商:

SELECT   blog_id, sum(amount) 
FROM     donations
GROUP BY blog_id
ORDER BY sum(amount)