mysql集合运算_oracle 表的集合运算(联合查询)

以前使用 ms sqlserver 的时候就用到过 union 关键字,将多条查询语句保存到一个列表中用程序来处理,这样可以让多个查询结果集合合并在一起,一般很少有这种需求,个人在使用的时候除非是子查询或多表查询实在无法实现的情况下才会用到。

集合运算要注意的问题

参与运算的各个集合必须列数相同且类型一致

采用第一个集合的表头作为最终结果的表头

如果使用了 order by,必须每个集合后面都使用 order by

可以使用小括号()先执行后面的语句

集合运算的几种方式

图片来自传智播客教师课件。

1、union/union all 并集

UNION运算符返回两个集合去掉重复元素后的所有记录。

SELECT employee_id, job_id

FROM employees

UNION

SELECT employee_id, job_id

FROM job_history;

UNION ALL 返回两个集合的所有记录,包括重复的。

SELECT employee_id, job_id, department_id

FROM employees

UNION ALL

SELECT employee_id, job_id, department_id

FROM job_history

ORDER BY employee_id;

e04a57eadc3a166b56ec255873c20446.png

2、intersect 交集

INTERSECT 运算符返回同时属于两个集合的记录。

select ename,sal from emp

where sal between 700 and 1300

INTERSECT

select ename,sal from emp

where sal between 1201 and 1400;

347733a9591b25949622a4f4bcfcaf7a.png

3、minus 差集

MINUS返回属于第一个集合,但不属于第二个集合的记录。

select ename,sal from emp

where sal between 700 and 1300

minus

select ename,sal from emp

where sal between 1201 and 1400;

052f59c41106a5b1a5f356855ec22b7d.png

相关

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值