查找最后n行的列中的值的总和
问题描述:
我试图找到最后十行中由某些条件选择并按某列排序的特定列中值的总和。我试过很明显的:查找最后n行的列中的值的总和
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规则。