做統計的時候,null是不計算在count以內的。所以字段的值最好不要設置為null。
比如:select count(user_id) as beyond_num from fs_users_added where credits<410 && user_id!=75語句,就統計不到null的數據行。
我需要統計出多少個用戶的學分比這個低。計算排名。結果由於credits值有null的情況,造成了數據統計不准確。明明是90個用戶超過,結果算出來是54個用戶。
解決辦法是:創建字段的時候,設置為not null。或者一個默認值0
如果允許為null,沒有插入值的情況下,默認被mysql給字段一個默認值是null,此時即便是后續使用如下語句修改掉字段的默認值:
ALTER TABLE `table_name`
MODIFY COLUMN `credits` float(10,2) UNSIGNED NULL DEFAULT 0 COMMENT '用戶學分' AFTER `user_id`;
原來存儲進去的null值也不會改變。於是造成了麻煩。
此時的解決辦法是:使用如下語句,對值為null的行都設置成一個默認值0
update table_name set credits=0 where credits is null
null與空值的區別
1、null值就是null,空值是'',兩個引號(單引號雙引號都可以嗎?)
2、null值是會占用空間的。空值是不占用空間的。
3、B樹索引時不會存儲NULL值的(也恰好解釋了,使用語句count統計的的時候不會計算在內)。MySQL字段盡量避免NULL,應該指定列為NOT NULL。然后給字段設置一個默認值0或者空''。