1. 程式人生 > >一個奇怪的SQL問題:case when 在記錄不存在時不生效

一個奇怪的SQL問題:case when 在記錄不存在時不生效

問題描述:
要查詢複合條件的某條記錄中某個欄位的值,複合條件的記錄不存在
然後在select中寫了 case when 這個欄位 is null then 0 else 這個欄位 end,如下第一種寫法
然後查到的結果依然是null

-

解決方法:
在select語句後加上了一個 count(1),這樣才達到了目的,記錄不存在時返回0,如下第二種寫法

  • 第一種寫法
SELECT CASE WHEN log_minute_30 IS NULL THEN 0 ELSE (log_minute_30) END
FROM call_count cc
WHERE cc.log_date='2016-09-17'
AND cc.log_hour='19' AND cc.cname='A'

第一種sql得到的結果

  • 第二種寫法
SELECT CASE WHEN log_minute_30 IS NULL THEN 0 ELSE (log_minute_30) END, count(1)
FROM call_count cc
WHERE cc.log_date='2016-09-17' AND cc.log_hour='19' AND cc.cname='A'

第二種sql得到的結果