我在下面的数据中存在一些空值。
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的数据 实际上,它应该选择ID 1,4,5,6
为什么会这样? 这个问题是什么?
答案 0 :(得分:0)
正确的查询是
SELECT * FROM test_table WHERE flag != 1 OR flag IS NULL
这仅仅是因为您无法使用!=
运算符(或==, <=, >=
等类似运算符)与NULL值。您需要使用IS
运算符。您的查询将仅检查在标志列中具有值的行,因为它将忽略NULL值,因为它们无论如何都不匹配。
答案 1 :(得分:0)
这个问题已经被提出,用户就此给出了一个很好的答案。
请查看以下链接: -
MySQL: selecting rows where a column is null
SQL NULL特别,你必须做WHERE字段IS NULL,因为NULL不能等于任何东西,