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

猜你喜欢

转载自www.cnblogs.com/liebagefly/p/10120924.html