为了账号安全,请及时绑定邮箱和手机立即绑定

所有运行正确,为什么添加了GROU BY p.type_id之后就报错呢???

select p.type_id,p.type_name,s.type_name from tdb_goods_types p left join tdb_goods_types s on s.parent_id = p.goods_id;这段成功运行,但是如果在后面加上

group by p.type_id或者group by p.type_name就报错。。。。。错误如图http://img1.sycdn.imooc.com//598db6540001d9b005630108.jpg

正在回答

3 回答

用这个应该可以解决了

  1. set GLOBAL sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ';



0 回复 有任何疑惑可以回复我~

查询资料得知 Mysql5.7版本以后对插入等操作要求更加严谨;

解决方案:

方法一、 操作层要求SQL相关格式更规范,严谨;(恕我菜鸟般的技术不能解决, 只能修改配置文件)

方法二、修改配置文件my.ini (linux下为 my.cnf)

-----首先在mysql控制台执行语句 SELECT @@GLOBAL.sql_mode;

我这里可查到 sql_mode 如下

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

可发现第一个 就是 ONLY_FULL_GROUP_BY , 复制这些字符串

--------接着打开mysql 的  my.ini 在 [mysqld] 下添加如下信息

sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

就是将 ONLY_FULL_GROUP_BY 去掉

-------保存,退出, 重启服务, 再次尝试就可, 如图

http://img1.sycdn.imooc.com//599e60aa00012c6815201006.jpg

2 回复 有任何疑惑可以回复我~

你的连接条件分组好像是有问题 ,  最后的  ON s.parent_id = p.goods_id    这  好像不对    你改一下:ON s.parent_id = p.type_id       我看你的错误提示上写的就是   this is incompatible with sql mode = only full group by     你改一下试一下

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
与MySQL的零距离接触
  • 参与学习       397026    人
  • 解答问题       3350    个

本课程涵盖全部MySQL数据库的基础,学习MySQL数据库的基础知识

进入课程

所有运行正确,为什么添加了GROU BY p.type_id之后就报错呢???

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信