mysql - 按总和(值)sql排序

标签 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_id 和个人捐赠。所以像这样:

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

最佳答案

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

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

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

关于mysql - 按总和(值)sql排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15865311/

相关文章:

php - 从数据库读取数据出错

mysql - 如何按名义账户和月份汇总交易数据

MySQL - 从 "leaderboard"获取位置

mysql - 带有 PDO 的简单 MySQL SELECT

MySQL InnoDB 自愿事务成为死锁受害者

mysql - 超过 MySQL 的 TIME 值限制 838 :59:59

mysql - ORDER BY 相关性,同时使用参数化值

mysql - 按大小写排序 : Where value LIKE, 然后位置

python - MySQL-python 已经安装但仍然有 "ImportError: no module named MySQLdb"错误

python - NumPy 数组总和减少