【发布时间】:2017-12-22 03:27:21
【问题描述】:
在启用 ONLY_FULL_GROUP_BY 选项的 MariaDB 上,我收到错误消息
在 HAVING 子句中使用了非分组字段 'vcount'
执行查询时
SELECT c.* FROM
automobile_company c
LEFT OUTER JOIN (SELECT company_id, COUNT(*) AS vcount FROM automobile_variant GROUP BY company_id) vc
USING (company_id)
WHERE c.automobile_type = 0 AND vc.vcount > 0;
但是查询甚至没有HAVING 子句。
- 是因为 MariaDB 正在重写查询以进行优化吗?
- 是否可以在不将 GROUP BY 移到子查询之外的情况下重写上述查询?
- 我唯一的选择是使用没有子查询的简单 LEFT OUTER JOIN,并在 GROUP BY 子句中提及需要选择的每个字段吗?
【问题讨论】:
-
它看起来像是 10.2 中新优化中的一个错误(您显然正在使用它)。作为一种解决方法,尝试设置
optimizer_switch='condition_pushdown_for_derived=off'。请在jira.mariadb.org 提交错误报告。