gpt4 book ai didi

mysql - GROUPing 时,mariaDB 是否不支持 SELECT 语句中的函数依赖?

转载 作者:可可西里 更新时间:2023-11-01 08:09:56 26 4
gpt4 key购买 nike

我的 SQL 语句中的 GROUP BY 有一些问题。

我正在使用 mariaDB 10.1.17 并注意到在执行如下 SQL 语句时出现错误:

SELECT `pubs`.`ID` AS `ID`
,AVG(`reviews`.`atmosphere`) AS `average`
,`pubs`.`name` AS `name`
,`pubs`.`country` AS `country`
FROM `pubs`
LEFT JOIN `reviews` ON `pubs`.`ID` = `reviews`.`pub_ID`
GROUP BY `pubs`.`ID`
ORDER BY `average` DESC
,`reviews`.`date` DESC

我得到的错误是

"Syntax error or access violation: 1055 'pubreviews.pubs.name' isn't in GROUP BY"

我的理解是,由于“功能依赖性”——一个 ID 映射到一个名称和国家这一事实,因此不需要通过语句将此类列显式添加到组中。

(我已“打开”ONLY_FULL_GROUP_BY)

这似乎是暗示here重新 MySQL 5.7.5

鉴于此错误消息.. mariaDB 是否未实现此功能?

谢谢

最佳答案

根据 mariadb 文档,如果打开 ONLY_FULL_GROUP_BY sql 模式,它似乎不考虑功能依赖。

关于 ONLY_FULL_GROUP_BY 的文档sql模式说:

For SELECT ... GROUP BY queries, disallow SELECTing columns which are not referred to in the GROUP BY clause, unless they are passed to an aggregate function like COUNT() or MAX(). Produce a 1055 error.

因此,没有函数依赖的提示。

我还检查了文档中关于 group by 的内容子句:

If you select a non-grouped column or a value computed from a non-grouped column, it is undefined which row the returned value is taken from. This is not permitted if the ONLY_FULL_GROUP_BY SQL_MODE is used.

同样,没有任何函数依赖的提示。

以上内容从 mariadb 版本 10.1.18 和 10.2.2 开始有效。

关于mysql - GROUPing 时,mariaDB 是否不支持 SELECT 语句中的函数依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40084093/

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