mysql的聯合查詢join中coalesce函數的妙用 解決join聯合查詢中null默認值的問題

###########################

場景:

業務在使用join聯合查詢的時候,比如有兩張表A和B,A表有mobile和success兩個字段,B表有mobile和fail兩個字段,然後通過mobile字段關聯這兩張表,但是要求只有mobile字段值相同的數據,都需要輸出success和fail字段,如果這兩個字段中有null,則對應的輸出不能爲null而是改爲0

一般的join:

select A.mobile,A.success,B.fail   from A full join B on A.mobile=B.mobile

改進的join:

select A.mobile, coalesce(A.success,0),soalesce(B.fail,0)   from A full join B on A.mobile=B.mobile

 

 

select coalesce(字段名,0) as value from t;

 

 

coalesce()解釋:返回參數中的第一個非空表達式(從左向右依次類推); 

使用示例:a,b,c三個變量。

select coalesce(null,2,3); // Return 2

select coalesce(null,null,3); // Return 3

select coalesce(1,2,3); // Return 1
複製代碼
通過上面例子可以看出,他的作用是將返回傳入的參數中第一個非null的值,再比如 

SELECT COALESCE(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1); 
-- Return 1 
如果傳入的參數所有都是null,則返回null,比如 
SELECT COALESCE(NULL, NULL, NULL, NULL); 
-- Return NULL 

這個參數使用的場合爲:假如某個字段默認是null,你想其返回的不是null,而是比如0或其他值,可以使用這個函數 
SELECT COALESCE(字段名,0) as value from t;

 

 

 

 

 

 

 

 

############################

 

#############################

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