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

标签 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的数据 实际上,它应该选择 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/

相关文章:

mysql - MySQL中使用窗口函数的移动平均线

MySQL 存储过程 if 语句不工作

mysql - 如何设置评级表SQL

php - 显示3个表的数据

mysql - @rownum 没有按预期递增(每组选择 n)

mysql - sql 将列添加到结果中

mysql - 海量数据查询SOLR

php - 为什么我的 html 不显示从我的数据库中获取的特殊字符

mysql - Django 从数据库检索数据到模板

mysql - Docker - 如何更改我的 Docker Compose 文件以自动化 MySQL 容器的 bash 脚本?