一個奇怪的SQL問題:case when 在記錄不存在時不生效
阿新 • • 發佈:2019-01-31
問題描述:
要查詢複合條件的某條記錄中某個欄位的值,複合條件的記錄不存在
然後在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'
- 第二種寫法
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'