sql - 如何使用子查询从 Oracle SQL 的 Tab2 中的 Tab1 中删除行?
问题描述
我在 Oracle SQL 中有如下表:
选项卡1
ID
-----
1
2
3
选项卡2
ID
-----
3
4
5
我需要从 Tab1 中获取不在 Tab2 中的值。我做了如下查询:
select ID
from Tab1
where ID not in (select ID from Tab2)
上面的查询不起作用,我怎样才能改变它以达到我需要的结果:
ID
---
1
2
我可以补充一点,我更喜欢在这个问题中使用子查询,我该如何在 Oracle SQL 中做到这一点?
解决方案
使用MINUS
集合运算符:
SQL> with
2 tab1 (id) as
3 (select 1 from dual union all
4 select 2 from dual union all
5 select 3 from dual
6 ),
7 tab2 (id) as
8 (select 3 from dual union all
9 select 4 from dual union all
10 select 5 from dual
11 )
12 select id from tab1
13 minus
14 select id from tab2;
ID
----------
1
2
SQL>
顺便说一句,您使用的查询(带有子查询)返回正确的结果;你的意思是说你不喜欢使用子查询吗?
<snip>
12 select id from tab1
13 where id not in (select id from tab2);
ID
----------
1
2
推荐阅读
- git - 如何将具有相关更改的两个分支合并到 master 中?
- vue.js - Vue + Vuetify 为移动端定制日历组件
- reactjs - 在 React App 中使用 axios 在 CakePHP API 中执行 PUT 方法时,在预检选项中未找到 404 错误
- java - getSupportLoaderManager(id, args, ??) 的第三个参数类型是什么
- android - Android 获取/设置 ImageView 的值
- asp.net-core - RabbitMq 包中缺少“PublishAsync”
- amazon-web-services - AWS API 网关服务编排
- python-3.x - 如何迭代两个字典并使用值进行计算,以键为条件?
- powerbi - DAX:如何选择每个日期和每个月的最大值
- reactjs - Material-ui 的 CardActionArea 组件属性的打字稿错误