mysql的一次報錯排查

昨天工作時,因爲一個sql沒注意,搞了半天才解決,現在記錄下。

業務場景比較複雜,查詢的sql也複雜了些。業務邏輯最複雜的地方在其中的一個子查詢那,結果最終的結果怎麼都不對,以爲是子查詢那出了問題,對業務邏輯梳理了半天,發現子查詢的sql結果是對的。最後發現出錯在外面的group by上,暈死。不知道是因爲沒在意還是誤操作,本來是group by a被寫成了group by a, b,導致最終的結果多了幾條。

group by,分組,常用來對列分組後,然後使用聚合如sum/count/max達到計算的效果,常見的是對一個字段分組,當對多個字段分組的時候,需注意和一個字段分組時的區別。

method status
get 200
post 200
post 400
post 500

加入有如上這個表,如果對status字段進行分組並計算每組的數目,比如

SELECT status, COUNT(status) FROM 表名 GROUP BY status;

得到

200 2
400 1
500 1

比較簡單,不多說明。

現在對method和status一起分組

SELECT method, status, COUNT(status) FROM 表名 GROUP BY status, method;

得到

get 200 1
post 200 1
post 400 1
post 500 1

這樣是對status和method一起分組,即兩個字段作爲一個整體,看可以分多少組。兩個字段作唯一性分組,而不是做排列組合

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章