【SQL】联合语句

本文详细介绍了SQL中的四种集合操作符:UNION、UNIONALL、INTERSECT和MINUS的功能及用法。通过具体实例展示了如何利用这些操作符来处理多个查询结果集,包括合并、去重、求交集和差集等操作。

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

一、UNION操作符

UNION 操作符用于合并两个结果集,在合并的同时去掉重复行,并按合并后结果的第一列升序排列。合并后结果集的列名由第一个结果集的列名确定。

UINON连接的两个结果集必须具有相同的列数,并且各列具有相同的数据类型。注意这里说的是相同的数据类型,而不是相同的列名!

示例:两个表的列名不同,但具有相同的数据类型,同样可以进行UNION合并,并进行去重、排序处理。

(1)表T1、T2的表结构

SQL> desc t1;

 Name                                       Null?   Type

 ----------------------------------------- -------- ----------------------------

 ID                                                 NUMBER(2)

 NAME                                               VARCHAR2(10)

 AGE                                                NUMBER(3)

 

SQL> desc t2;

 Name                                      Null?    Type

 ----------------------------------------- -------- ----------------------------

 ID                                                 NUMBER(2)

 ENAME                                              VARCHAR2(10)

 AGE                                                NUMBER(3)

(2)表T1、T2中的数据

SQL> select * from t1;

 

ID          NAME      AGE

---------- ---------- ----------

 1        wanglili       22

 2         maling       22

 3         mateng       22

 4     yinguopeng       22

 

SQL> select * from t2;

 

ID          ENAME      AGE

---------- ---------- ----------

 2       zhangfang       22

 1         wanglili       22

 3           mateng       22

 4         zhanghui       22

(3)UNION合并后,去重排序,按第一个结果集的列名返回合并后的列名

SQL> select * from t1

  2  union

  3  select * from t2;

 

ID       NAME      AGE

---------- ---------- ----------

 1       wanglili       22

 2       maling       22

 2       zhangfang   22

 3       mateng       22

 4    yinguopeng       22

 4     zhanghui       22

 

6 rows selected.

 

二、UNION ALL 操作符

UNION ALL 同样可以合并两个结果集除了不去重、不排序以外和UNION完全相同。因为不去重、不排序的原因,UNION ALL比UNION效率高很多,所以,当对结果集要求不高的时候尽量使用UNION ALL。

SQL> select * from t1

  2  union all

  3  select * from t2;

 

ID        NAME      AGE

---------- ---------- ----------

 1     wanglili       22

 2        maling       22

 3       mateng       22

 4    yinguopeng       22

 2   zhangfang       22

 1     wanglili       22

 3       mateng       22

 4     zhanghui       22

 

8 rows selected.

 

三、INTERSECT操作符

INTERSECT用于返回两个结果集的交集,去掉重复值,并且会以第一列的升序排列。

示例:查询两个表中同时存在的人员信息。

SQL> select * from t1

  2  intersect

  3  select * from t2;

 

ID NAME      AGE

---------- ---------- ----------

 1 wanglili       22

 3 mateng       22

 

四、MINUS操作符

MINUS用于返回在第一个结果集中存在,而在第二个结果集中不存在的数据,并且会以第一列升序排列。

示例:查询T1中存在,而T2中不存在的数据。

SQL> select * from t1

  2  minus

  3  select * from t2;

 

ID NAME      AGE

---------- ---------- ----------

 2 maling       22

 4 yinguopeng       22

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值