null值是不會算在count以內的
阿新 • • 發佈:2018-12-31
做統計的時候,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或者空''。