產生根源
比如我們有三條數據,對應的列名是delete_flag,對應的數據是‘normal’,‘delete’,null。
此時我們查所有不等於delete的記錄,我們期望的是兩條記錄 normal和null。我們書寫如下sql。
select * from a where delete_flag != 'delete'
發現查詢出來的結果只是一條,這是因為mysql的空值過濾機制。
解決
1、進行一下非null判斷
select * from a where IFNULL(delete_flag,'') != 'delete'
2、將null空值也加入條件
select * from a where delete_flag != 'delete' or delete_flag is null