博客
关于我
MySql系列:[4200][1140]In aggregated query without GROUP BY, expression #2 of SELECT list contains nona
阅读量:790 次
发布时间:2023-02-13

本文共 1225 字,大约阅读时间需要 4 分钟。

Maven项目报错:expression #2 of SELECT list contains nonaggregated column 'newhelp.appr.title'

报错原因分析

在使用MySQL数据库时,可能会遇到以下错误信息:

expression #2 of SELECT list contains nonaggregated column 'newhelp.appr.title'; this is incompatible with sql_mode=only_full_group_by

MySQL 5.7+的SQL模式变化

MySQL从版本5.7开始,默认启用了ONLY_FULL_GROUP_BY SQL模式。这一改进是为了更严格地遵循类似Oracle和DB2的处理方式,从而确保“分组求最值”操作的合法性。这种模式下,SELECT列表中不能包含不明确的字段。

OFFICIAL EXPLANATION(官方解释)

ONLY_FULL_GROUP_BY模式的作用:

  • 这个模式确保了在使用GROUP BY时,SELECT列表中的字段是明确的且与GROUP BY中的字段一致。
  • 它防止了在查询结果中出现不明确的情况。

INTRODUCTION TO THE ISSUE(通俗解释)

简单来说,如果你的查询涉及到分组操作(如GROUP BY),那么SELECT列表中的字段必须是明确的。具体来说,如果你试图在查询结果中同时显示多个不同的值(比如一组数据中的最大值、小写值等),那么字段必须是聚合函数的结果(如MAX(title), MIN(name)等)。

POSSIBLE SOLUTIONS(可能的解决方案)

要解决这个问题,可以采取以下措施:

  • 检查查询是否需要分组操作:

    • 确认你的查询是否包含GROUP BY子句。如果不需要分组操作,可以直接删除GROUP BY部分。
    • 如果确实需要分组操作,请确保SELECT列表中的字段是唯一且与GROUP BY中的字段一致。
  • 调整SQL模式:

    • 如果你不想修改查询本身,可以在连接字符串中设置sql_mode参数,将ONLY_FULL_GROUP_BY参数设置为OFF
      SET sql_mode=OFF
    • 但请注意,禁用ONLY_FULL_GROUP_BY可能会导致其他潜在问题,因此这种方法应作为最后手段使用。
  • 注意事项

    • 查询合法性:

      • 在默认启用ONLY_FULL_GROUP_BY模式下,所有查询都必须遵守“分组求最值”的合法性规则。
      • 如果你的查询涉及多个字段的聚合(如COUNT, AVG等),请确保这些字段与GROUP BY中的字段一致。
    • 数据库版本更新:

      • 如果你的应用依赖于旧的MySQL版本(如5.6或更早),建议升级到最新版本,以便正常运行。

    总结

    这个问题是MySQL 5.7+版本带来的一个重要变化。你需要根据具体需求调整查询逻辑或数据库配置,以确保查询的合法性。

    转载地址:http://sxdfk.baihongyu.com/

    你可能感兴趣的文章
    MySQL数据库被黑了
    查看>>
    mysql数据库设计
    查看>>
    MySQL数据库设计与开发规范
    查看>>
    MYSQL数据库进阶操作
    查看>>
    MySQL数据库配置文件调优详解
    查看>>
    MySQL数据库酒店客房管理系统(含MySQL源码) 结课作业 做的不是很好
    查看>>
    mysql数据库里的一些坑(读高性能mysql有感)
    查看>>
    MySQL数据库面试题(2021最新版)
    查看>>
    MySQL数据库高并发优化配置
    查看>>
    mysql数据恢复
    查看>>
    MySQL数据的主从复制、半同步复制和主主复制详解
    查看>>
    mysql数据碎片整理
    查看>>
    MySQL数据类型
    查看>>
    MySQL数据类型字节长度
    查看>>
    mysql数据被误删的恢复方案
    查看>>
    MySQL数据读写分离(MaxScale)上干货!!!
    查看>>
    mysql整库导入、导出
    查看>>
    mysql文本函数和数字函数
    查看>>
    Mysql新建用户和数据库并授权
    查看>>
    mysql日志
    查看>>