MySQL实现Oracle的Intersect 和 Minus



使用的两个表都非常简单,只为演示可以实现该功能。

table_a 和 table_b的结构如下:

用Oracle实现两个a、b两个表的交集

  1. SELECT a_id as c_id,a_name as c_name from table_a  
  2. INTERSECT  
  3. SELECT b_id as c_id,b_name as c_name from table_b  
SELECT a_id as c_id,a_name as c_name from table_a
INTERSECT
SELECT b_id as c_id,b_name as c_name from table_b

用Mysql实现

  1. SELECT c_id,c_name from (  
  2.     SELECT a_id as c_id,a_name as c_name from table_a  
  3.     UNION ALL  
  4.     SELECT b_id as c_id,b_name as c_name from table_b  
  5. )a   
  6. GROUP BY c_id,c_name  
  7.  HAVING count(*)>1  
SELECT c_id,c_name from (
	SELECT a_id as c_id,a_name as c_name from table_a
	UNION ALL
	SELECT b_id as c_id,b_name as c_name from table_b
)a 
GROUP BY c_id,c_name
 HAVING count(*)>1
输出结果如下:


用Oracle实现两个a、b两个表的差集

  1. SELECT a_id as c_id,a_name as c_name from table_a  
  2. MINUS  
  3. SELECT b_id as c_id,b_name as c_name from table_b  
SELECT a_id as c_id,a_name as c_name from table_a
MINUS
SELECT b_id as c_id,b_name as c_name from table_b
用Mysql实现:

  1. SELECT a.a_id,a.a_name FROM table_a a  
  2. LEFT JOIN table_b b   
  3. ON a.a_id = b.b_id  
  4. WHERE a.a_name != b.b_name;  
SELECT a.a_id,a.a_name FROM table_a a
LEFT JOIN table_b b 
ON a.a_id = b.b_id
WHERE a.a_name != b.b_name;
输出结果如下:




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值