Oracle中有并集、交集、差集的3种运算
   1.  union :    得到两个查询结果的并集,并且自动去掉重复行,不会排序。 
     union all: 得到两个查询结果的并集,不会去掉重复行,也不会排序 
 2. intersect: 得到两个查询结果的交集,并且按照结果集的第一个列进行排序 
 3. minus:     得到两个查询结果的减集,以第一列进行排序 。

例子:

表A:t_form_table_a

表B:t_form_table_b

(1)select * from t_form_table_a
         union
        select * from t_form_table_b 

select * from t_form_table_a
union all
select * from t_form_table_b

(2)select * from t_form_table_a
         intersect
         select * from t_form_table_b

(3)select * from t_form_table_a
         minus
         select * from t_form_table_b

 

示例
表A{1,2,3,4,5,}  
表B{4,5,6,7,8,} 

select * from A minus select * from B;

结果:1,2,3。

 select * from B minus select * from A;

结果为:6,7,8。

select * from A unionselect * from B;

结果为:1,2,3,4,5,6,7,8。

select * from A minus (select * from A minus select * from B); 

结果为:4,5。
 

背景: 产品文件每天要查询后台数据 看是否成功发布   几乎每天都有产品漏发数据导致为成功发布  

有的是销户  需要手动刷新后台数据处理    就比对几个交易日的未发布成功的交集   就是几天都没发布  逐个排查   

  两个sql有排序的情况下  执行报错  去掉order by 就执行成功了

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐