sql - Oracle SQL in 和 not in 都返回空
问题描述
我有一个包含用户名列的人员表。我还有一个包含用户名列的学生表。“大卫”存在于人员表中,但不存在于学生表中。
当我运行它时,我没有得到不正确的结果:
Select USERNAME
From PEOPLE
Where username = 'david' and USERNAME not in (Select USERNAME From STUDENT)
Order By USERNAME
但是,当我运行它时,我也没有得到任何结果。这怎么可能?
Select USERNAME
From PEOPLE
Where username = 'david' and USERNAME in (Select USERNAME From STUDENT)
Order By USERNAME
解决方案
如果任何USERNAME
instudent
是NULL
,则表达式的计算结果为NULL
。这会过滤掉所有行。我猜那是你的问题。
要解决这个问题,我建议不要使用NOT IN
子查询。只需习惯使用NOT EXISTS
:
where username = 'david' and
not exists (select 1 from student s where s.USERNAME = people.username)
推荐阅读
- swift - SWIFTUI Firebase 检索子集合数据
- qt - 是否在 deleteLater() 之前调用了所有 Qt 插槽?
- c - 在 GDB 中使用便利变量的地址
- java - 尝试保存图像时出现 Android 运行时错误
- java - 有谁知道如何自动在手机屏幕上找到坏点?
- arrays - 检测 shell 脚本中的 ksh 数组支持
- javascript - 如何在 Jest 中跟踪失败的异步测试?
- xamarin.forms - Xamarin.Forms - 如何重定向到文件/图像/视频选择器的最后打开目录
- javascript - leetcode 强盗错误输出
- google-tag-manager - 第一方 Cookie 未在 GTM 中跟踪