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或者空''。

相關文章
相關標籤/搜索