oracle MINUS和NOT EXISTS、EXISTS和INTERSECT
来源:互联网 发布:ubuntu 删除开机启动 编辑:程序博客网 时间:2024/06/05 16:40
有两个表,表中的记录如下:
表tb_test中的数据有:
SQL> select * from tb_test;
ID NAME AGE
------------------------------------ -------------------------------------------------- ----------
1 A 22
2 B 23
3 C
4 D
5 E 24
6 F 25
7 G 26
8 H 22
8 rows selected
表tb_test2中的数据有:
SQL> select * from tb_test2;
ID NAME AGE
------------------------------------ -------------------------------------------------- ----------
1 A 22
2 B 23
3 C
4 D
5 E 24
6 F 25
6 rows selected
1、比较MINUS和NOT EXISTS
使用NOT EXISTS的查询结果:
SQL> SELECT * FROM tb_test t WHERE NOT EXISTS (SELECT * FROM tb_test2 t2 WHERE t2.id=t.id);
ID NAME AGE
------------------------------------ -------------------------------------------------- ----------
7 G 26
8 H 22
使用MINUS的查询结果:
SQL> SELECT * FROM tb_test MINUS SELECT * FROM tb_test2;
ID NAME AGE
------------------------------------ -------------------------------------------------- ----------
7 G 26
8 H 22
可以看出使用MINUS和NOT EXISTS的结果是一样的。
MINUS的意思是使用第一个查询的结果作为基础数据减去另一个查询结果作为最终结果集。可以解决的问题是“我需要返回在数据源A中存在,但是在B中不存在的数据集”。
2、比较EXISTS和INTERSECT
使用EXISTS的查询结果:
SQL> SELECT * FROM tb_test t WHERE EXISTS (SELECT * FROM tb_test2 t2 WHERE t2.id=t.id);
ID NAME AGE
------------------------------------ -------------------------------------------------- ----------
1 A 22
2 B 23
3 C
4 D
5 E 24
6 F 25
6 rows selected
使用INTERSECT的查询结果:
SQL> SELECT * FROM tb_test t INTERSECT (SELECT * FROM tb_test2 t2);
ID NAME AGE
------------------------------------ -------------------------------------------------- ----------
1 A 22
2 B 23
3 C
4 D
5 E 24
6 F 25
6 rows selected
可以看出使用EXISTS和INTERSECT的查询结果相同。
INTERSECT是返回查询中都存在的行,可以解决的问题为“我需要返回源A和B中都存在的数据”。
阅读全文
0 0
- VC++判断文件或者文件夹是否存在
- 怎么判断focusWidget()返回的是哪类型控件
- grep常用方法
- Android中crash处理
- 关于Android Studio Failed to find: com.android.support:appcompat 问题解决
- oracle MINUS和NOT EXISTS、EXISTS和INTERSECT
- python进阶之进程间通信方式之一消息队列
- 洛谷1037 NOIP2009 最优贸易
- lvm逻辑卷的建立、扩容和减容等操作方法
- android watchdog原理
- java单项链表反转
- Oracle修改实例名SID
- 矩阵漫谈[转载]
- Python Tkinter GUI(二)py2app打包Mac应用程序