我正在尝试在特定列中查找由某些条件选择的最后十行并按某些列排序的值的总和。我尝试了显而易见的事实:
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查询缺乏经验,所以我真的很感激任何帮助。
答案 0 :(得分:1)
因为mysql按以下顺序运行查询:
FROM->WHERE->GROUP BY->HAVING->ORDER BY->LIMIT.
因此限制将在分组后应用,并将过滤组而不是普通行。
关于abs两次:必须为所有派生查询添加别名。这是mysql规则。