gpt4 book ai didi

mysql - 带有子查询的 HAVING 子句中使用的非分组字段

转载 作者:行者123 更新时间:2023-11-28 23:12:50 27 4
gpt4 key购买 nike

在启用了 ONLY_FULL_GROUP_BY 选项的 MariaDB 上,出现错误

Non-grouping field 'vcount' is used in HAVING clause

执行查询时

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 子句中提及需要选择的每个字段吗?

最佳答案

如果您只需要检查某行是否存在于 automobile_variant 中,则不需要计数或分组依据

    SELECT c.* FROM automobile_company c WHERE c.automobile_type = 0 AND 
EXISTS(select company_id from automobile_variant av where av.company_id=c.company_id);

关于mysql - 带有子查询的 HAVING 子句中使用的非分组字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45146830/

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