mysql整条记录为null和查询出的字段为null以及聚合函数对他们的转换

查询的时候,整条记录为null的情况:
比如where条件不满足,整条记录都为null,inner join不满足,整条记录为null
这个时候coalesce(field,0)显示的还是null(对于这点hive也是如此,我推断应该常见的关系型数据库皆如此)

查询的时候,字段为null的情况:
where和join条件都满足,但是要查询的字段本身为null,这个时候coalesce(field,0)便为0

但是我发现sum等聚合函数可以把整条记录为null的情况转换成内部为null的情况,比如
SELECT COALESCE(sum(field),0)
FROM tabel
WHERE condition_field = '123'
这个时候输出是0

后续我又发现
SELECT sum(field)
FROM tabel
WHERE condition_field = '123'
这时候where条件不满足,sum(field)得到的是null
但是如果是count
SELECT count(field)
FROM tabel
WHERE condition_field = '123'
就会得到0,这两个聚合函数得到的结果还不太一样

留言

熱門文章