一、Mysql错误:

In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column 'ynsl_new.u.user_id'; this is incompatible with sql_mode=only_full_group_by

1、原sql语句:

SET @data_id='153f61e9727b450d8abbba5941e5085a';
SELECT
u.*,
GROUP_CONCAT(r.ROLE_CODE SEPARATOR ',') AS roleCode
FROM
tab_user u
LEFT JOIN tab_user_role_relation ur ON ur.user_id = u.user_id
LEFT JOIN tab_role r ON r.role_id = ur.role_id
WHERE
u.delete_mark = 0
AND u.enable_mark = 1
AND u.data_id = @data_id

  

2、中文大概意思:

在不带GROUP BY的聚合查询中,选择列表的表达式1包含未聚合的列“ynsl_new.u.user_id”;这与SQL_mode=only_full_group_by不兼容

也就是说,mysql的sql_mode是only_full_group_by的时候,在不使用group by 并且select后面出现聚集函数的话,那么所有被select的都应该是聚集函数,否则就会报错;

3、出现的原因:

在MySQL5.7.5后,默认开启了ONLY_FULL_GROUP_BY,所以导致了之前的一些SQL无法正常执行,其实,是我们的SQL不规范造成的,因为group by 之后,返回的一些数据是不确定的,所以才会出现这个错误。

二、解决方案:

1、关闭ONLY_FULL_GROUP_BY

在配置文件中,找到sql_mode,去掉only_full_group_by

2、规范sql语句,使用group by

SET @data_id='153f61e9727b450d8abbba5941e5085a';
SELECT
u.*,
GROUP_CONCAT(r.ROLE_CODE SEPARATOR ',') AS roleCode
FROM
tab_user u
LEFT JOIN tab_user_role_relation ur ON ur.user_id = u.user_id
LEFT JOIN tab_role r ON r.role_id = ur.role_id
WHERE
u.delete_mark = 0
AND u.enable_mark = 1
AND u.data_id = @data_id
GROUP BY u.user_id ;

  

基于【 bug解决】一 || mysql的ONLY_FULL_GROUP_BY导致的sql语句错误的更多相关文章

  1. 解决Mysql搭建成功后执行sql语句报错以及区分大小写问题

    刚搭建完mysql 8.0以后会: 一.表区分大小写, 二.执行正确的sql语句成功且会报:[Err] 1055 - Expression #1 of ORDER BY clause is not i ...

  2. MySQL的EXPLAIN命令用于SQL语句的查询执行计划

    MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP).这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的.这条命令并没有提供任何调整建议,但它能够提供重要的信息 ...

  3. 如何查找MySQL中查询慢的SQL语句

    如何查找MySQL中查询慢的SQL语句 更多 如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow ...

  4. 如何查找MySQL中查询慢的SQL语句(转载)

    转载自https://www.cnblogs.com/qmfsun/p/4844472.html 如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那 ...

  5. 何在mysql查找效率慢的SQL语句?

    如何在mysql查找效率慢的SQL语句呢?这可能是困然很多人的一个问题,MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow-queries[=file_name]选项启 ...

  6. Mysql性能优化一:SQL语句性能优化

    这里总结了52条对sql的查询优化,下面详细来看看,希望能帮助到你 1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2,应尽量避免在 w ...

  7. [MySQL数据库之数据库相关概念、MySQL下载安装、MySQL软件基本管理、SQL语句]

    [MySQL数据库之数据库相关概念.MySQL下载安装.MySQL软件基本管理.SQL语句] 数据库相关概念 数据库管理软件的由来 数据库管理软件:本质就是个C/S架构的套接字程序. 我们在编写任何程 ...

  8. MySQL中执行sql语句错误 Error Code: 1093. You can't specify target table 'car' for update in FROM clause

    MySQL中执行sql语句错误 Error Code: 1093. You can't specify target table 'car' for update in FROM clause 201 ...

  9. Mysql中 查询慢的 Sql语句的记录查找

    Mysql中 查询慢的 Sql语句的记录查找 慢查询日志 slow_query_log,是用来记录查询比较慢的sql语句,通过查询日志来查找哪条sql语句比较慢,这样可以对比较慢的sql可以进行优化. ...

随机推荐

  1. Nginx http -> https 跳转后 POST 丢失

    在 nginx.conf 配置文件中添加如下配置进行 http -> https 跳转 server { listen ; server_name example.org; https://$s ...

  2. 深入学习c++--多线程编程(二)【当线程间需要共享非const资源】

    1. 遇到的问题 #include <iostream> #include <thread> #include <chrono> #include <futu ...

  3. Spring 中使用了哪些设计模式?

    好了,话不多说,开始今天的内容.spring中常用的设计模式达到九种,我们举例说明. 1.简单工厂模式 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式 ...

  4. QML随机颜色

    color=Qt.rgba(Math.random(),Math.random(),Math.random(),1)

  5. 【linux】Linux 运行进程实时监控pidstat命令详解

    简介 pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存.设备IO.任务切换.线程等.pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上 ...

  6. build时自动清除console

    一.第一种方法 安装 babel-plugin-transform-remove-console 修改 babel.config.js 文件 let transformRemoveConsolePlu ...

  7. 强制卸载 Visual studio 2017

    微软挖的坑,很是烦人.还好老外这篇文章亲测可行.懒得翻译了,权做笔记吧. 网址是:https://jessehouwing.net/visual-studio-2017-force-uninstall ...

  8. gitstats 统计gitlab仓库中的代码

    使用Git版本库,有一些可视化的工具,如gitk,giggle等,来查看项目的开发历史.但对于大型的项目,这些简单的可视化工具远远不足以了解项目完整的开发历史,一些定量的统计数据(如每日提交量,行数等 ...

  9. oracle 存储过程详细介绍(创建,删除存储过程,参数传递等)

    这篇文章主要介绍了oracle 创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包等相关资料,需要的朋友可以参考下   oracle 创建,删除存储过程,参数传递,创建 ...

  10. windows下连接mysql提示1044-access denied for root''@'localhost' to database

    ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mydb'. 原因是因为mysql数据库的user表里,存 ...