null值是不会算在count之内的

 

 

作统计的时候,null是不计算在count之内的。因此字段的值最好不要设置为null。mysql

 


好比:select count(user_id) as beyond_num from fs_users_added where credits<410 && user_id!=75语句,就统计不到null的数据行。sql

 

我须要统计出多少个用户的学分比这个低。计算排名。结果因为credits值有null的状况,形成了数据统计不许确。明明是90个用户超过,结果算出来是54个用户。spa

 



解决办法是:建立字段的时候,设置为not null。或者一个默认值0索引

 



若是容许为null,没有插入值的状况下,默认被mysql给字段一个默认值是null,此时即使是后续使用以下语句修改掉字段的默认值:it


ALTER TABLE `table_name`
MODIFY COLUMN `credits`  float(10,2) UNSIGNED NULL DEFAULT 0 COMMENT '用户学分' AFTER `user_id`;


原来存储进去的null值也不会改变。因而形成了麻烦。table


此时的解决办法是:使用以下语句,对值为null的行都设置成一个默认值0

update table_name set credits=0 where credits is null

date

null与空值的区别select

 

一、null值就是null,空值是'',两个引号(单引号双引号均可以吗?)float

 

二、null值是会占用空间的。空值是不占用空间的。统计

 

三、B树索引时不会存储NULL值的(也刚好解释了,使用语句count统计的的时候不会计算在内)。MySQL字段尽可能避免NULL,应该指定列为NOT NULL。而后给字段设置一个默认值0或者空''。

相关文章
相关标签/搜索