mysql - 查找一列中最后 n 行的值总和

标签 mysql

我正在尝试查找特定列中按某些条件选择并按某些列排序的最后十行的值总和。我尝试了显而易见的:

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/

相关文章:

c# - 带有 MySql 和 Dot Net Core 的 IdentityServer4 - 类型 'System.Int16' 和 'System.Boolean' 之间没有定义强制运算符

MySQL - 获取最近 1 天、7 天、30 天的聚合,并允许将记录计入超过 1 组

php - 闪存注册表

php - SQL 查询返回与当前或该月最后一天匹配的行

mysql - 如何在 VB.net 中运行多行 CMD 代码?

php - Laravel 4 重复数据库条目

php - 将 ajax 结果显示到文本框中

PHP PDO - 带 WHERE 的 MySQL INSERT

mysql - 如何使用mysql查询从三个表中比较从mysql表中检索值?

mysql - 从许多 mysql bin 日志文件中恢复数据库