我有以下数据,其中存在一些空值。
flag
列的默认值为 NULL
test_table
Id flag
1 0
2 1
3 1
4 NULL
5 0
6 NULL
现在,当我编写像这样的选择查询时
select Id from test_table where flag!=1
然后它只选择id 1和5的数据 实际上,它应该选择 ids 1,4,5,6
为什么会发生这种情况? 有什么问题吗?
最佳答案
正确的查询是
SELECT * FROM test_table WHERE flag != 1 OR flag IS NULL
这只是因为您无法使用 !=
具有 NULL 值的运算符(或类似的 ==, <=, >=
等)。您需要使用IS
运营商为此。您的查询将仅检查在标志列中具有值的行,因为它将简单地忽略 NULL 值,因为这些值无论如何都不会匹配。
关于mysql - 使用 != 条件运算符时不会选择默认空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47156836/