mysql - 为什么 MySQL SUM 查询只返回一行?

标签 mysql sql database join

我正在尝试创建一个 MySQL 查询以返回我的数据库中每个帐户的所有报表余额的总和。查询如下所示:

SELECT SUM(balance), handle FROM statement_versions
INNER JOIN statements ON statement_versions.statement_id = statements.id
INNER JOIN accounts ON statements.account_id = accounts.id;

当我这样做时,它只返回一行,其中包含一个总余额和一个账户(ID 为 1 的账户)。我想要的是返回所有账户及其汇总报表余额。我将如何实现这一目标?

最佳答案

您需要根据某些东西进行分组,可能是handle(我猜这与帐户 ID 相关?),否则 MySQL 将SUM all 从您的 JOIN 中选择的值。添加 GROUP BY 子句会使 SUM 发生在 GROUP BY 中列的每个不同值。将您的查询更改为:

SELECT SUM(balance), handle FROM statement_versions
INNER JOIN statements ON statement_versions.statement_id = statements.id
INNER JOIN accounts ON statements.account_id = accounts.id
GROUP BY handle;

如果 handleaccounts.id 无关,并且您希望获得按 accounts.id 分组的结果,请将查询更改为:

SELECT SUM(balance), accounts.id FROM statement_versions
INNER JOIN statements ON statement_versions.statement_id = statements.id
INNER JOIN accounts ON statements.account_id = accounts.id
GROUP BY accounts.id;

关于mysql - 为什么 MySQL SUM 查询只返回一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53019016/

相关文章:

php - 我在日志中遇到错误,但是脚本可以满足我的要求

javascript - PostgreSQL + JS : Creating a query based on a random array length of 1-5 values

database - Cassandra 与 ScyllaDB 的内存使用情况

php - 如何在 Laravel 中使用 order by array 选择或排序

mysql - 将数据库架构与 MySQL Workbench 进行比较

php - 将变量传递给另一个 PHP 文件并执行它

sql - 在 Oracle IN 子句中使用 LIKE

mysql - LEFT JOIN 延迟查询 5 秒

python - 为什么 django-south 不包含在 django.contrib 中?

MySQL 数据库文本编码错误