mysql使用group by丢数据问题的记录

版权声明:转载请注明原链接 https://blog.csdn.net/cowcomic/article/details/82027454

上周在做一个数据库关联查询的时候遇到一个很奇怪的问题

我的场景是这样的

主要有3张表

a表主要是a.id

b表与a表使用a.id和b.aid一一对应,包含其他内容

c表?与a表是多对一的关系,一个a.id对应多个c.id

我现在需要看一下一个aid对应了多少个cid同时把对应b表中的属性都取出来

使用了两个left join

大概语句是这样的

select a.*,b.*,count(c.id) from a left join b on a.id=b.aid left join c on a.id=c.aid? group by a.id

在具体的使用情况下,发现偶尔b表中的内容查不出来,相同的sql后面简单价格desc的排序就ok,asc的情况下就会有一两条丢失b表中的信息?

查了很久也没查到问题,一直以为是自己的程序或者是sql有问题

后来同事帮忙查到了根源

是mysql5.6的一个bug

mysql5.6在使用group by的时候是会出现这样的问题?,5.5就没有问题

如果依然想在5.6下来满足这样的情景,简单有两种方法,都是修改sql

第一种就是先查出来,再group by,而不是像上面一样查和group同时进行

第二种是枚举字段,字段都使用max函数处理一下,也能解决,字段要多就麻烦了

猜你喜欢

转载自blog.csdn.net/cowcomic/article/details/82027454