1. 程式人生 > >SQL---count()函式結果為null時替換為0

SQL---count()函式結果為null時替換為0

在sql中,做count()統計時,如果結果為null,這條資料是不顯示的,但是經常會有類似的需求,比如:統計江西省下的某11個市的企業數量,如果有些城市企業數量為0,會發現最後返回的結果不到11條。怎麼辦?

有如下的資料:


現在需要統計:江西商務廳下的所有的公司數量,按照city排序,sql很簡單,如下:

SELECT
	city,
	COUNT(*) AS count
FROM
	entInfo
WHERE
	department = '江西商務廳'
AND city IN (
	'南昌市',
	'景德鎮市',
	'萍鄉市',
	'九江市',
	'新餘市',
	'鷹潭市',
	'贛州市',
	'吉安市',
	'宜春市',
	'撫州市',
	'上饒市'
)
GROUP BY
	city

此時會得到如下結果,會發現,本來有11個市,但查詢結果裡面僅有8條資料,因為有三個市是沒有資料的,查詢結果為null,所有沒有顯示。


這個sql可以這麼寫:

SELECT t.city,count(h.id) as count from 
(
 SELECT '南昌市' city UNION
 SELECT '景德鎮市' city UNION
 SELECT '萍鄉市' city UNION
 SELECT '九江市' city UNION
 SELECT '新餘市' city UNION
 SELECT '鷹潭市' city UNION
 SELECT '贛州市' city UNION
 SELECT '吉安市' city UNION
 SELECT '宜春市' city UNION
 SELECT '撫州市' city UNION
 SELECT '上饒市' city
) t 
LEFT JOIN intInfo 
on t.city=h.city 
and h.department='江西商務廳'
GROUP BY t.city
ORDER BY count desc
查詢結果如下: