minus intersect union 简单说明

咱们在编写sql语句时,可能会遇到minus、intersect 、union 的应用疑问,现举个简单例子说明下:

--minus 在前不在后
select *
  from (select 1
          from dual
        union all
        select 2 from dual)
minus (select 2
         from dual
       union all
       select 3 from dual);
--intersect前后交集
select *
  from (select 1
          from dual
        union all
        select 2 from dual)
intersect (select 2
             from dual
           union all
           select 3 from dual)
           
 --union 并集,检查重复行        
select *
  from (select 1
          from dual
        union all
        select 2 from dual)
union  (select 2
             from dual
           union all
           select 3 from dual)
           
--union all 并集,不检查重复行
select *
  from (select 1
          from dual
        union all
        select 2 from dual)
union all (select 2
             from dual
           union all
           select 3 from dual)
在 PL/SQL 中,UNIONUNION ALL、MINUS 和 INTERSECT 是用于合并和比较结果集的操作符。它们之间的区别如下: 1. UNIONUNION 操作符用于合并两个或多个 SELECT 语句的结果集,并去除重复的行。它返回一个包含所有唯一行的结果集。 2. UNION ALL:UNION ALL 操作符也用于合并两个或多个 SELECT 语句的结果集,但不去除重复的行。它返回一个包含所有行的结果集,包括重复的行。 3. MINUS:MINUS 操作符用于从第一个 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、付费专栏及课程。

余额充值