失效原因
有记录且该字段为null,则可以用ifnull转换,如果没有记录,则不能转换(因为本身就没有记录)
解决方法
有三个思路,一个是通过聚合函数,因为会默认返回一个null值或是0值,以此达到生成记录的目的。
第二个思路是将这个值作为一行返回出去。
另一个思路则是,先通过exists函数判断返回的值是否含有记录,如果不含有就通过if函数判断后返回值,如果含有就返回这个查询。
思路一:聚合函数
- 表结构
| value |
| 101 |- 示例sql
select ifnull(sum(`value`),0) from test where `value` < 100- 结果
> 0思路二:select
- 表结构
| value |
| 101 |- 示例sql
select ifnull( (select `value` from test where `value` < 100 ) ,0) as dt- 结果
> 0思路三:Exists
- 表结构
| value |
| 101 |- 示例sql
select if(exists(select `value` from test where `value` < 100) = 0,0,(select `value` from test where `value` < 100))- 结果
> 0 

Comments | NOTHING