本來按理說這個小問題不值得寫一個博客的,不過正是這個小問題造成了一個大bug。 本來每月對數據都好好的,但是這一兩天突然發現許多數據明顯不對,這一塊的代碼和sql有些不是我寫的,不過出現了bug,還是要迎難而上,我就從數據源頭查起,發現數據源好像也沒有問題。 地毯式搜索,中間的sql,邏輯一個一個對 ...
本來按理說這個小問題不值得寫一個博客的,不過正是這個小問題造成了一個大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),所以以前沒有出現數據錯亂的問題。