gpt4 book ai didi

mysql - MySQL 上的 GROUP BY

转载 作者:行者123 更新时间:2023-11-29 09:28:28 25 4
gpt4 key购买 nike

我有一个问题。

当我在 this dataset 上运行此代码时:

SELECT a.customerNumber, a.checkNumber 
FROM (SELECT customerNumber,
checkNumber, min(paymentDate) as paymentDate
FROM payments
GROUP BYcustomerNumber) AS a;

我想知道何时不指定未在 group by 函数中使用的其他列。 MySQL 允许我这样做,但我记得在不指定其他列的情况下,我会收到此消息,您试图执行一个不包含指定表达式“列之一”作为聚合函数一部分的查询。

我在这里遗漏了一些关键点吗?我认为MySQL会自动返回未指定的第一个条目列而不在聚合函数中指定此列。

最佳答案

这取决于服务器选项sql_mode=ONLY_FULL_GROUP_BY是否启用。从 5.7 版本开始,该选项默认启用。

The documentation详细介绍了禁用该选项时服务器的行为。简而言之:

the server is free to choose any value from each group, so unless they are the same, the values chosen are nondeterministic, which is probably not what you want.

底线:始终列出group by子句中的所有非聚合列,无论服务器的设置如何;这是最佳实践和 SQL 标准,也是获得可预测结果的唯一方法。

关于mysql - MySQL 上的 GROUP BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59199546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com