SELECT
f.province AS loc,
IFNULL(COUNT(f.province), 0) AS count
FROM
project_name_data d
RIGHT JOIN full_province f ON (
TRIM(
REPLACE (
REPLACE (
SUBSTRING_INDEX(d.location, '|', 1),
'省',
''
),
'壮族',
''
)
) = f.province
)
GROUP BY
loc;
其中project_name_data为数据源所在表, full_province为全国所有省份的结果,现在想统计每个省对应的数据数量,如果不存在则填0,现在SQL运行后显示的只有数据源表中存在的省份,没有full_province - project_name_data这部分,求解

解决方案 »

  1.   

    null和空值是有区别的
      

  2.   

    你的字符里面是Null还是''空字符串,MySQL 貌似对待这两 不一样
      

  3.   

    IFNULL(COUNT(f.province), 0)
    COUNT(f.province)的值不可能是NULL,只能是一个正整数。所以,IFNULL函数,有没有,都一样。
      

  4.   

    改成left join试试。一般不用right join
      

  5.   

    首先NULL和空字符串有区别,其次试试把IFNULL(字段名)换成 case when len(字段名)=0 then 0 else 字段名 end 
      

  6.   

    IFNULL只能判断是否为空,而COUNT,返回的值,肯定是数字,不可能有NULL。
    另外,如果没有返回行,IFNULL也不会有作用,需要关联其他表,用LEFT JOIN。