1. 程式人生 > >mysql使用group by丟資料問題的記錄

mysql使用group by丟資料問題的記錄

上週在做一個數據庫關聯查詢的時候遇到一個很奇怪的問題

我的場景是這樣的

主要有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函式處理一下,也能解決,欄位要多就麻煩了