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

标签 mysql mariadb

我的 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/

相关文章:

php - 从数组更新 mysql 表(HTML 表单输入)

php - mysql SUM 直到达到值

javascript - AngularJS $http 不返回整个 Select 语句

mysql - SQL:如何计算特定顺序的项目

MySQL服务器CPU高且 "kernel time"使用率

mysql - 空表重复条目 '1' 键 'PRIMARY'

mysql - 如果表存在则执行某些操作

php - sql + php 连接和爆炸

mysql - 如何获取今天或 future 7天(周)过生日的 friend ?

MySQL 收集数据 JOIN