用group by时select出现不应该的sal字段 问题

用group by时select出现不应该的sal字段 问题

图片描述
为什么老师的不能运行,我可以运行???sal在这里确实没有意义,但我的没有报错。

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小小 2021-10-17 15:54:10

同学你好,group by子句的执行受严格模式、数据库版本等多种环境因素影响,上述sql可以正确执行,猜测同学的代码是在非严格模式下执行的。可执行如下sql语句使其在严格模式下执行:

-- 严格模式

set global sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES';

set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES';

-- 非严格模式

set global sql_mode='NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES';

set session sql_mode='NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES';

代码测试:

1、严格模式下执行

https://img1.sycdn.imooc.com//climg/616bd62e090c408b10000397.jpg

2、非严格模式下执行:

https://img1.sycdn.imooc.com//climg/616bd6880922564c09710376.jpg

祝学习愉快~

  • 提问者 做条咸鱼才最好 #1

    严格模式有什么好处吗?开发是用严格模式还是非严格模式?

    2021-10-17 16:41:47
  • 同学你好,严格模式会使得MySQL自身对数据进行严格的校验。SQL开启了严格模式从一定程序上来讲是对我们代码的一种测试,如果开发环境没有开启严格模式在开发过程中也没有遇到错误,那么在上线或代码移植的时候将有可能出现不兼容的情况,因此在开发过程中建议开启MySQL的严格模式。

    祝学习愉快~

    2021-10-17 17:08:50
  • 怎么开启严格模式呢?

    2021-10-17 17:31:25
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师