• 有效解决mysql中ONLY_FULL_GROUP_BY办法1055


    一. (推荐)any_value

      mysql用来应对 ONLY_FULL_GROUP_BY 所出现的 any_value()

      1. mysql 5.7 以后 基本都会自带 ONLY_FULL_GROUP_BY ,很可能在部署以后,会出现 1055的错误

      2. ONLY_FULL_GROUP_BY 意思就是 select target list 中有明确的语义,在5.7之前不存在是允许模糊语义查询的。但是5.7以后,需要明确你所查询的所有数据,允许有聚合函数,不允许存在group by 后所不带字段

      3. 故而Mysql提供了 any_value() 来拒绝 ONLY_FULL_GROUP_BY 

      4. 需注意一点 any_value() 所取得是group by同一组数据中的第一条数据信息

      

      ① 规范形式, 简单到不能再简单,没有任何问题

      

      ② group by 之外的字段加入 select 之后, 发现报错,1055 不兼容

      

      ③ 加入 any_value 来拒绝 ONLU_FULL_GROUP_BY的规范

       

      

      ④ 变换成聚合函数也是不存在问题的

       

       

      注意

          只要不是group by之后的字段,那么不管是放select之后还是 order by 之后 都会产生问题, 但是注意 where 就不会产生问题

          

          

    二. (半推荐) 套sql

      既然 ONLY_FULL_GROUP_BY 不允许存在group by 后面以外的字段显示, 那么就将 group by 按照需要字段套进去然后进行where,获取到需要的数据

        一般来说,不符合部分场景

      

    三. (极度不推荐)更改mysql中的 sql_mode

      这种方法纯属扯淡,但是作为了解还是比较可以的。  毕竟作为公司开发,去更改数据库的sql_mode 然后重启,简直是吃饱了撑的。当天就下岗,

      数据库命令行输入 select @@sql_mode 就能看到所有的规则,找mysql的配置文件打开就能看到。

      

      

  • 相关阅读:
    html5的键盘事件
    阻止滑屏
    JS 复制到黏贴板上
    最新拖动原理
    方法——<37>
    验证——正则<37>
    《高级程序设计》 9 客户端检测
    《高级程序设计》8 BOM
    《高级程序设计》7 函数表达式
    《高级程序设计》6 面向对象的程序设计
  • 原文地址:https://www.cnblogs.com/honour1207/p/16178330.html
Copyright © 2020-2023  润新知