0

我正在尝试从名为捐赠的表中获取 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

4

2 回答 2

4

您没有对列进行分组。您需要按非聚合列对它进行分组,在这种情况下按blog_id

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

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

于 2013-04-07T17:17:41.627 回答
2

您缺少GROUP BY操作员:

SELECT   blog_id, sum(amount) 
FROM     donations
GROUP BY blog_id
ORDER BY sum(amount)
于 2013-04-07T17:17:55.730 回答