当前位置: 首页 > news >正文

SQL小贴式: 用NOT EXISTS 而不是 NOT IN !!!

SQL小贴式: 用NOT EXISTS 而不是 NOT IN !!!

当使用NOT IN进行过滤时, 比如NOT IN xxx 时, 如果 xxx 中有NULL值时, 就会一行也不返回 !

在 SQL 中,NOT IN 子查询遇到 NULL 值时会产生意外行为,主要因为 SQL 使用三值逻辑(TRUE、FALSE、UNKNOWN),而不是二值逻辑.
SQL 比较(如 =, IN)涉及 NULL 时,结果可能是 UNKNOWN(未知)。
而WHERE 子句只接受 TRUE 的行;UNKNOWN 或 FALSE 的行会被排除。

NOT IN 的内部逻辑:x NOT IN (a, b, NULL) 等价于 x != a AND x != b AND x != NULL。
如果 x != NULL 为 UNKNOWN,整个表达式为 UNKNOWN,导致行被排除。

所以一定要用 NOT EXISTS 替代 NOT IN:最稳健,避免 NULL 问题。

https://www.codebonobo.tech/post/38#SQL小贴式: 用NOT EXISTS 而不是 NOT IN !!!

http://www.hskmm.com/?act=detail&tid=12165

相关文章:

  • 手撕大模型|FlashAttention 原理及代码解析
  • react工程化
  • CF700E Cool Slogans 做题记录
  • 完整教程:在 Ubuntu 上安装和配置 PostgreSQL 实录
  • 一个MCU与FPGA混合电路上电启动的问题及其解决办法探索[原创www.cnblogs.com/helesheng]
  • JMX与RMI
  • 通过主机监控发现路径遍历漏洞的实战技巧
  • Code New Roman 字体的正确下载方式
  • 多态是对于处理不同的变量,但是使用相同或者类似的方式。多态核心分为两种形式:编译时多态(静态多态)和运行时多态(动态多态)C++中多态通常使用虚函数或者指针(引用)实现。
  • 从 C++ 到 Python
  • Nipper 3.9.0 for Windows Linux - 网络设备漏洞评估
  • c++单例实践
  • NOIP 模拟赛九
  • 个人项目-软件工程第二次作业 - Nyanya-
  • 详细介绍:互联网医院品牌IP的用户体验和生态构建
  • 支持 SSL 中等强度密码组(SWEET32) - 漏洞检查与修复
  • C# WPF CommunityToolkit.MVVM (测试一)
  • linux kernel synchronization rcu
  • 锁定Nvidia驱动版本
  • 第二十一章-sql 注入-union 联合注入 (1)
  • Android开发参考
  • 求出e的值
  • 线段树
  • CSP-S模拟24
  • 今年CSP...
  • 0voice-2.1.1-io多路复用select/poll/epoll
  • Transformer与ViT
  • comfUI背后的技术——VAE - 实践
  • CCPC2023 秦皇岛 M. Inverted
  • redux