关于mysql函数 count与sum过滤行错误行为的有关问题

关于mysql函数 count与sum过滤行异常行为的问题

select count(null) from t1; 返回0, 这符合预期, 因为count的传入的值不能为null

select count(x<200) from t1; 返回总行数, 无法过滤行;

select count(x<200 or null) from t1; 可以统计出x小于200的行的数量

select count(x<200 and null) from t1; 返回127399, 不知道这个值是怎么得出来的

表为innodb, 共计130000条记录

———————————————–


经过测试 select 1454 and null 的返回值为null, 为什么第一条sql与最后一条sql具有不同的结果?

但是可以使用 select sum(x<200) from t1统计小于200的值的和

mysql对函数中的条件的处理有什么样的规律

往各位大哥不吝赐教




select count(ifnull(columns,0,1)) from t1; 返回0, 这符合预期, 因为count的传入的值不能为null

select count(case when x<100 then 1 else 0 end) from t1; 返回总行数, 无法过滤行;

select count(case when x<200 or x is null then 1 else 0 end) from t1; 可以统计出x小于200的行的数量

select count(这个逻辑有问题) from t1; 返回127399, 不知道这个值是怎么得出来




可以算是MYSQL的一个BUG了吧。 理论上应该是返回 0,但显然MYSQL中有什么问题了。这个需要去分析MYSQL的源代码。

关于mysql函数 count与sum过滤行错误行为的有关问题

相关文章:

你感兴趣的文章:

标签云: