mysql - 为什么聚合函数不起作用,除非使用 GROUP BY 语句?

标签 mysql sql group-by aggregate-functions

计算 invoice 的价格(在单独的表中有 *invoice item*s 并链接到 invoices),我写了这个查询:

SELECT `i`.`id`, SUM(ii.unit_price * ii.quantity) invoice_price
FROM (`invoice` i)

JOIN `invoiceitem` ii
ON `ii`.`invoice_id` = `i`.`id`

WHERE `i`.`user_id` = '$user_id'

但它只产生了一行。

经过研究,我发现在查询末尾必须有 GROUP BY i.id。有了这个,结果符合预期。

在我看来,即使没有 GROUP BY i.id,也不会丢失任何东西,它应该可以正常工作!

请用一些简单的句子告诉我...

为什么我应该总是使用额外的!!! GROUP BY i.id没有它会丢失什么,也许作为最有效的问题,如何我应该记住我丢失了额外的 GROUP BY?!

最佳答案

您必须包括分组依据,因为有许多 ID 进入总和。如果您不指定它,那么 MySQL 只会选择第一个,并对整个结果集求和。 GroupBy 告诉 MySQL 对每个按实体分组的结果求和(或一般聚合)。

关于mysql - 为什么聚合函数不起作用,除非使用 GROUP BY 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17351887/

相关文章:

mysql - 如何在关系中创建表

mysql:指定用户权限

sql - 在 SQL Server 中将列值转换为 int

php - 使用 PHP 在 MySql 数据库中插入数据时遇到问题

mysql - Node sql语法错误

mysql - 获取给定时间段内分组项目的最新值,包括。零和空值

sql - 如何生成日期系列以占用谷歌 BigQuery 中缺失的日期?

mysql - 使用 MySQL 根据字段值进行排序和分组

python - 根据不同的列值分配唯一值

Python 分区依据