解决mysql5.7 DISTINCT和order by 导致3065错误

 在新版的mysql5.7的版本中,如果DISTINCTorder by一起使用将会报3065错误,sql语句无法执行。最新的mysql5.7版本语法比之前5.6版本语法更加严格导致的。DISTINCT和order by都会对数据进行排序操作,所以会产生冲突。

    解决方法一:

        在sql语句中使用DISTINCT时不使用order by进行排序,获取结果集后通过php进行数据的排序,同事也提高的mysql的性能。同时group by,limit和其中的一起搭配使用也会导致错误。

    解决方法二:

        编辑mysql5.7的配置文件,添加配置 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,这段代码同时也可以解决mysql5.7中的group by导致的1055错误

 
  
bash
  1. vim /etc/my.cnf
  2. #添加下面的配置
  3. sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

    重启mysql生效

 
  
bash
  1. service mysqld restart

解决mysql5.7 DISTINCT和order by 导致3065错误_第1张图片

转载自http://zixuephp.net/article-322.html

你可能感兴趣的:(mysql)