使用!=条件运算符时,不会选择默认空值

时间:2017-11-07 11:30:43

标签: mysql

我在下面的数据中存在一些空值。
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

为什么会这样? 这个问题是什么?

2 个答案:

答案 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不能等于任何东西,