sql - Oracle:在运算符中获取空值?
问题描述
假设我有两个表 A 和 B 具有完全相同的列。我想编写一个查询,从 A 中选择也存在于 B 中的所有行,所以我想写如下内容:
select att1, att2, att3 from A
where (att1, att2, att3) in (select att1, att2, att3 from B)
但是,当我的表允许包含空值时,这不起作用,因为in
运算符使用 来检查相等性=
,例如att1 = att1
. 这不适用于空值,因为null = ...
总是会导致错误。
什么是与上述查询执行相同操作的最佳/最简单方法,但在存在空值时也有效(如果 2 个比较属性为空,则返回 true)
解决方案
INTERSECT
相反,集合运算符怎么样?
select att1, att2, att3 from A
intersect
select att1, att2, att3 from B
推荐阅读
- python - Tensorflow:如何在具有不同批量大小的估计器中使用 RNN 初始状态进行训练和测试?
- c# - 获取一个集合的所有唯一排列,其中包含 2 个带限制的不同字符
- r - Dataframe R,每隔一行添加一次
- wordpress - 如何从 wordpress.com 下载网站的代码文件?
- python - 在熊猫中将 Column1 值转换为标题,将 column2 转换为其值
- c++ - 将 wchar_t* 写入文件 - 仅适用于某些字符
- qt - 如何加载 32/64 位库更改 Qt Creator 中的编译器套件?
- vba - 从不同工作表上定义的名称复制/粘贴的子
- objective-c - 需要帮助将这段代码从 Swift 转换为 Objective-C
- youtube - 视频上传失败时,Youtube V3 List API 返回空白项