zoukankan      html  css  js  c++  java
  • 在mysql中RIGHT JOIN与group by一起使用引起的一个大bug

    本来按理说这个小问题不值得写一个博客的,不过正是这个小问题造成了一个大bug。

    本来每月对数据都好好的,但是这一两天突然发现许多数据明显不对,这一块的代码和sql有些不是我写的,不过出现了bug,还是要迎难而上,我就从数据源头查起,发现数据源好像也没有问题。

    地毯式搜索,中间的sql,逻辑一个一个对。

    突然发现了有个sql有些不对,是个A RIGHT JOIN B +group by这种类型的。

    左表查出来4条数据,右表6条数据。按理说 右查询的结果,应该也是6条数据,但是结果却是5条数据。

    我靠,好奇怪呀!

    通过仔细观察,发现左表有两条数据与右表不匹配,然后进行连接查询和group by的时候,这两条数据进行了合并,所以造成了数据错乱。(顺便说,这个sql的bug不是我写的)

    解决思路,当执行右查询的时候,在group by的时候一定要group by 右表的字段。(举例,group bu B.ziduan)

    那么同理,当执行左查询的时候,在group by的时候一定要group by 左表的字段。(举例,group bu A.ziduan)

    以前没有出现这种错误,是因为左表有一条数据或者没有数据与右表不匹配(我试了,如果左表只有一条数据不匹配的话,没有出现数据错乱,不过为了严禁最好还是抒写正确的sql),所以以前没有出现数据错乱的问题。

  • 相关阅读:
    Jenkins+ansible+Gitlab集成环境搭建
    Jenkins 和常用工具集成
    Jenkins 安装部署及应用
    ansible 及相关应用
    gitlab 快速安装
    [持续交付实践] 交付流水线设计:基于测试脚本的线上拨测监控系统
    gitlab CICD
    Nginx判断UserAgent添加referer
    Nginx判断变量的配置
    golang 入门之环境搭建
  • 原文地址:https://www.cnblogs.com/liebagefly/p/10120924.html
Copyright © 2011-2022 走看看