mysql - SQL 中的 NULL 在以下场景中如何工作?
问题描述
我正在练习 SQL 并意识到 SQL 中的NULL是非常了不起的“实体”。
表“ xo ” 请查看表结构和内容的链接
当我运行以下 SQL 查询时
select a from xo where a not in (select c from xo) ;
它不返回任何行。当我运行这个查询
select a from xo where a in (select c from xo);
它按我预测的方式工作。
你能解释一下上面的事情是如何工作的吗?如果您可以提供一些额外的资源来真正理解NULL,那将非常有帮助。
解决方案
这是因为NULL
s在 SQL中被特殊对待。每当您将某些东西与其进行比较时,NULL
它都会返回unknown,这反过来又使NOT IN
条件比较失败。
这也是推荐使用EXISTS()
over的原因之一NOT IN
。
推荐阅读
- c++ - 使用函数求整个矩阵的总和 (C++)
- ionic-framework - 如何仅显示当月的天数 - ionic2-calendar
- angular - 带有 jest 和 @testing-library/angular 的 mat-menu 单元测试用例
- python - torchvision.io 在 __init.py__ 中找不到参考 read_image()
- javascript - 如何通过javascript根据值更改文本颜色
- c# - 如何在.Net核心中模拟动作结果
- haskell - 关于通过多个嵌套功能级别进行映射
- python - Python smtp 无法将邮件发送到群组电子邮件地址
- entity-framework-5 - EF 5 和事务表
- python - 使用 BeautifulSoup 从亚马逊抓取整个类别的产品