我正在尝试查找特定列中按某些条件选择并按某些列排序的最后十行的值总和。我尝试了显而易见的:
SELECT SUM(column) AS abc FROM table WHERE criteria ORDER BY column DESC LIMIT 10
然而,这似乎是整个专栏的总和!?
所以在尝试之后这似乎有效:
SELECT SUM(column) AS abc FROM (SELECT column FROM table WHERE criteria ORDER BY column DESC LIMIT 10) AS abc
我的问题...
为什么更直观的方法不起作用?
我可以使用 $data[0]
访问结果,但我更喜欢有一些有意义的变量。那么为什么我需要执行两次 AS abc
呢?
有没有更简洁/更好的方法来完成这项工作?
我对 SQL 查询非常缺乏经验,因此非常感谢任何帮助。
最佳答案
因为 mysql 按以下顺序运行查询:
FROM->WHERE->GROUP BY->HAVING->ORDER BY->LIMIT.
因此限制将在分组后应用,并将过滤组而不是普通行。
关于abs两次:需要为所有派生查询添加别名。这是mysql规则。
关于mysql - 查找一列中最后 n 行的值总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7228494/