这个就是错误截图
出现原因: MySQL的版本问题
MySQL 5.7.5以上版本,实现了对功能依赖的检测。如果启用了only_full_group_by SQL模式(默认启用),那么MySQL就会拒绝执行 select list、HAVING condition或ORDER BY list引用既不在GROUP BY子句中被命名,也不在功能上依赖于GROUP BY列(由GROUP BY列唯一确定)的未聚合列的查询。
从MySQL5.7.5开始,默认的SQL模式包括only_full_group_by。(在5.7.5之前,MySQL没有检测到功能依赖项,only_full_group_by在默认情况下是不启用的。关于前5.7.5行为的描述,请参阅MySQL 5.6参考手册。)
解决办法:两种
第一种:修改MySQL的配置文件
1. 连接数据库 输入下面命令,查询sql的模式
select @@sql_mode;
2. 修改数据库配置my.ini文件
在你安装数据库的文件夹下的my.ini文件
增加一行代码:
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
3. 重启MySQL服务
备注:我个人觉得最好不用这样吧 因为项目可能其他地方或许用到了这种模式,最好的方法是不要改动mysql的配置。正所谓能跑起来就不要动他的原理!
第二种方法:修改自己的sql
每个字段前加上any_value() 这种方法比较好 只需要修改sql 不会影响到其他问题
修改前:
SELECTid AS a,name AS b, age AS cFROMuser
修改后:
SELECTany_value(id)AS a,any_value(name)AS b, any_value(age)AS cFROMuser
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。