mysql的一次报错排查

昨天工作时,因为一个sql没注意,搞了半天才解决,现在记录下。

业务场景比较复杂,查询的sql也复杂了些。业务逻辑最复杂的地方在其中的一个子查询那,结果最终的结果怎么都不对,以为是子查询那出了问题,对业务逻辑梳理了半天,发现子查询的sql结果是对的。最后发现出错在外面的group by上,晕死。不知道是因为没在意还是误操作,本来是group by a被写成了group by a, b,导致最终的结果多了几条。

group by,分组,常用来对列分组后,然后使用聚合如sum/count/max达到计算的效果,常见的是对一个字段分组,当对多个字段分组的时候,需注意和一个字段分组时的区别。

methodstatus
get200
post200
post400
post500

加入有如上这个表,如果对status字段进行分组并计算每组的数目,比如

SELECT status, COUNT(status) FROM 表名 GROUP BY status;

得到

2002
4001
5001

比较简单,不多说明。

现在对method和status一起分组

SELECT method, status, COUNT(status) FROM 表名 GROUP BY status, method;

得到

get2001
post2001
post4001
post5001

这样是对status和method一起分组,即两个字段作为一个整体,看可以分多少组。两个字段作唯一性分组,而不是做排列组合

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值