在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
查询结果如下: