操作符union/union all、intersect、minus、(not)exist

本文详细介绍了SQL中UNION, UNION ALL, INTERSECT与MINUS四种集合操作符的用法与区别,通过具体例子展示了如何在查询结果集中进行并集、并集不重复、交集与差集的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

--UNION 操作符返回两个查询的结果集的并集
 select *
   from app_jf
  where jfindcode = 'KEY2014000063'
 union 
 select *
   from app_jf
  where jfindcode in ('KEY2014000064', 'KEY2014000063');
--查询结果是:
--KEY2014000063
--KEY2014000064

--UNION ALL 操作符返回两个查询的结果集的并集。对于两个结果集的重复部分,不去重。
 select *
   from app_jf
  where jfindcode = 'KEY2014000063'
 union all
 select *
   from app_jf
  where jfindcode in ('KEY2014000064', 'KEY2014000063');
--查询结果是:
--KEY2014000063
--KEY2014000063
--KEY2014000064

--INTERSECT 操作符返回两个结果集的交集
 select *
   from app_jf
  where jfindcode = 'KEY2014000063'
 intersect
 select *
   from app_jf
  where jfindcode in ('KEY2014000064', 'KEY2014000063');
--查询结果是:
--KEY2014000063

--MINUS操作符:返回两个结果集的差集
 select *
   from app_jf
  where jfindcode in ('KEY2014000064', 'KEY2014000063')
 minus
 select *
   from app_jf
  where jfindcode = 'KEY2014000063';
--查询结果是:
--KEY2014000064


--EXISTS
SELECT employee_id, last_name, job_id, department_id
  FROM employees
 outer WHERE EXISTS
 (SELECT 'X' FROM employees WHERE manager_id = outer.employee_id);
--NOT EXISTS
SELECT department_id, department_name
  FROM departments d
 WHERE NOT EXISTS
 (SELECT 'X' FROM employees WHERE department_id = d.department_id);


转载于:https://my.oschina.net/Cheney521/blog/395845

在 PL/SQL 中,UNIONUNION ALLMINUSINTERSECT 是用于合并和比较结果集的操作符。它们之间的区别如下: 1. UNIONUNION 操作符用于合并两个或多个 SELECT 语句的结果集,并去除重复的行。它返回一个包含所有唯一行的结果集。 2. UNION ALLUNION ALL 操作符也用于合并两个或多个 SELECT 语句的结果集,但不去除重复的行。它返回一个包含所有行的结果集,包括重复的行。 3. MINUSMINUS 操作符用于从第一个 SELECT 语句的结果集中减去第二个 SELECT 语句的结果集,返回在第一个结果集中存在但不在第二个结果集中的行。它会去除重复的行。 4. INTERSECTINTERSECT 操作符用于返回同时存在于两个 SELECT 语句结果集中的行,即交集。它会去除重复的行。 需要注意的是,这些操作符在比较结果集时要求两个 SELECT 语句具有相同的列数和相同或兼容的数据类型。 下面是一个示例: ``` SELECT column1 FROM table1 UNION SELECT column1 FROM table2; ``` 这将返回两个表中 column1 列的唯一值。 ``` SELECT column1 FROM table1 UNION ALL SELECT column1 FROM table2; ``` 这将返回两个表中 column1 列的所有值,包括重复的值。 ``` SELECT column1 FROM table1 MINUS SELECT column1 FROM table2; ``` 这将返回只在 table1 中存在但不在 table2 中存在的行。 ``` SELECT column1 FROM table1 INTERSECT SELECT column1 FROM table2; ``` 这将返回同时在 table1 和 table2 中存在的行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值