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