msyql使用ifnull或coalesce失效解决方法


失效原因

有记录且该字段为null,则可以用ifnull转换,如果没有记录,则不能转换(因为本身就没有记录)

解决方法

有三个思路,一个是通过聚合函数,因为会默认返回一个null值或是0值,以此达到生成记录的目的。
第二个思路是将这个值作为一行返回出去。
另一个思路则是,先通过exists函数判断返回的值是否含有记录,如果不含有就通过if函数判断后返回值,如果含有就返回这个查询。

思路一:聚合函数

  1. 表结构
| value |
|  101  |
  1. 示例sql
select ifnull(sum(`value`),0)  from test where `value` < 100
  1. 结果
> 0

思路二:select

  1. 表结构
| value |
|  101  |
  1. 示例sql
select ifnull( (select `value` from test where `value` < 100 ) ,0) as dt
  1. 结果
> 0

思路三:Exists

  1. 表结构
| value |
|  101  |
  1. 示例sql
select if(exists(select `value` from test where `value` < 100) = 0,0,(select `value` from test where `value` < 100))
  1. 结果
> 0

声明:一代明君的小屋|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - msyql使用ifnull或coalesce失效解决方法


欢迎来到我的小屋