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),所以以前没有出现数据错乱的问题。

  • 相关阅读:
    圣诞树
    删除临时表并且插入数据
    sql语句中查询用in的时候,按in的顺序来输出
    xmlhelper and excelhelper
    几个小知识点。
    根据页面上记录数和页面大小获取总页数
    SQL语句的疑问
    katie melua the closest thing to crazy
    something about table
    little things
  • 原文地址:https://www.cnblogs.com/liebagefly/p/10120924.html
Copyright © 2011-2022 走看看