null值是不會算在count以內的


 

 

做統計的時候,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或者空''。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM