mysql 5.7以上 case when 和group by冲突

项目场景:

mysql 5.7以上 case when 和group by冲突

问题描述:

查询 select @@sql_mode; 得知为 ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION:第一个为 ONLY_FULL_GROUP_BY ,即select的列都要在group中,或者本身是聚合列(SUM,AVG,MAX,MIN) 才行。


解决方案:

使用函数:any_value 包住

select COUNT(*) as num,sum(zzj) as total,any_value(case left(flh, 2) 
when '01' then '房屋及构筑物' 
when '02' then '土地及植物' 
when '03' then '仪器仪表' 
when '04' then '机电设备' 
when '05' then '电子设备' 
when '06' then '印刷机械' 
when '07' then '卫生医疗器械' 
when '08' then '文体设备' 
when '09' then '标本模型' 
when '10' then '文物及陈列' 
when '11' then '图书' 
when '12' then '工具、量具和器皿' 
when '13' then '家具' 
when '14' then '行政办公设备' 
when '15' then '被服装具' 
else '其他' end) name from  ttt_info GROUP BY left(flh, 2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MySQL中的GROUP BY和CASE WHEN是用于数据查询和分组的两个重要语句。 GROUP BY语句用于将查询结果按照指定的列进行分组。在引用\[2\]中的示例中,通过使用GROUP BY syear,将查询结果按照syear列进行分组。同时,使用了聚合函数MAX来计算每个分组中的最大值。 CASE WHEN语句用于根据条件进行条件判断和结果返回。在引用\[1\]和引用\[2\]中的示例中,使用了CASE WHEN语句来根据不同的条件返回不同的结果。在引用\[1\]中的示例中,根据ID字段的长度,使用CASE WHEN语句来给ID字段添加前缀。在引用\[2\]和引用\[3\]中的示例中,根据smonth的值,使用CASE WHEN语句来将samount的值分别归类到不同的季度列中。 综上所述,GROUP BY和CASE WHEN是MySQL中用于数据查询和分组的两个重要语句。GROUP BY用于按照指定的列进行分组,而CASE WHEN用于根据条件进行条件判断和结果返回。 #### 引用[.reference_title] - *1* [mysql 分组group by结合case when 二次分组用法](https://blog.csdn.net/xu2034029667/article/details/116403437)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [MySQL--case when的用法 以及 利用case when 和 group by 实现行转列](https://blog.csdn.net/weixin_42051673/article/details/113881999)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值