我有下面的数据,其中有一些空值。
flag
列的默认值为NULL
test_table
Id flag
1 0
2 1
3 1
4 NULL
5 0
6 NULL
现在,当我编写如下select查询时
select Id from test_table where flag!=1
那么它实际上只选择ID1和ID5的数据,它应该选择ID1,4,5,6
这一切为什么要发生?有什么问题吗?
发布于 2017-11-07 11:33:43
正确的查询是
SELECT * FROM test_table WHERE flag != 1 OR flag IS NULL
这仅仅是因为您不能使用!=
运算符(或类似的运算符,如==, <=, >=
等)。具有空值的。为此,您需要使用IS
运算符。您的查询将只检查标志列中有值的行,因为它将简单地忽略空值,因为这些值无论如何都不会匹配。
发布于 2017-11-07 11:37:42
这个问题已经被问过了,用户对此给出了一些很好的答案。
请查看以下链接:
MySQL: selecting rows where a column is null
SQL NULL的特殊之处在于,您必须在字段为NULL时执行操作,因为NULL不能等于任何值,
https://stackoverflow.com/questions/47156836
复制相似问题