zoukankan      html  css  js  c++  java
  • group by 错误

    出现错误:

    which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

    SQL的grop by 语法为, 


    select 选取分组中的列+聚合函数 from 表名称 group by 分组的列 


    从语法格式来看,是先有分组,再确定检索的列,检索的列只能在参加分组的列中选。

    所以问题中的,group by 后的 a,b,c是先确定的。select后的a,b,c才是可以变的。即

    以下语句都是正确的:

    select a,b,c from table_name group by a,b,c,d;
    select a,b from table_name group by a,b,c;
    select a,max(a) from table_name group by a,b,c;

    以下语句则是错误的:

    select a,b,c from table_name group by a,b;
    select a,b,c from table_name group by a;

    一:在sql查询语句中不需要group by的字段上使用any_value()函数

    这种对于已经开发了不少功能的项目不太合适,毕竟要把原来的sql都给修改一遍

    二:修改my.cnf(windows下是my.ini)配置文件,删掉only_full_group_by这一项

    若我们项目的mysql安装在ubuntu上面,找到这个文件打开一看,里面并没有sql_mode这一配置项,想删都没得删。

    当然,还有别的办法,打开mysql命令行,执行命令

    1
    select @@sql_mode;

    这样就可以查出sql_mode的值,复制这个值,在my.cnf中添加配置项(把查询到的值删掉only_full_group_by这个选项,其他的都复制过去):

    1
    sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION;

    如果 [mysqld] 这行被注释掉的话记得要打开注释。然后重重启mysql服务

    注:使用命令

    1
    set sql_mode=STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    这样可以修改一个会话中的配置项,在其他会话中是不生效的。  

    
    
  • 相关阅读:
    js自定义回调函数
    python:sql建表语句转换为json
    简单list转化为tree结构
    JSP中页面定时刷新
    struts2中<s:select/>标签的运用详解
    Redis 的 Sentinel
    redis持久化(persistence)
    java验证身份证合理性
    js 里面的键盘事件对应的键码
    Struts2中使用OGNL表达式语言访问静态方法和静态属性
  • 原文地址:https://www.cnblogs.com/boundless-sky/p/8649056.html
Copyright © 2011-2022 走看看