mysql的null值坑(UNIQUE KEY失效和判斷條件失效)

一個mysql菜鳥的經歷。mysql 踩的坑。

1. 值爲空 導致 UNIQUE KEY失效

數據存放在mysql,想通過UNIQUE KEY 和INSERT ON DUPLICATE KEY UPDATE 來清洗重複數據,結果發現插入成功後數據有重複。

發現原因是 UNIQUE KEY裏有NULL值,當UNIQUE KEY 裏有NULL值後,mysql不會監測UNIQUE KEY 認爲有重複。

修復方法是給 各 UNIQUE KEY設定默認值,例如 if(house_type_id,0) as house_type_id。

測試驗證插入數據不會有重複了。

2. 值爲空 導致 判斷條件失效

select if(null in (1),1,0) ,if(not null in (1),1,0) -- 結果是0,0

空值的所有 比較和集合 判斷邏輯都是 null (而不是false),所以加not 也是null(not null=null !)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章