零基础自学SQL课程 | UNION 联合查询

大家好,我是宁一。

今天讲解SQL教程第13课:UNION 联合查询。

前两节课讲的JOIN连接,可以对多个表进行横向列合并。

这节课讲的UNION 操作符,是将多个查询结果,按行纵向合并。

基本语法:

SELECT  <字段名>  FROM  <表名>
UNION
SELECT  <字段名>  FROM  <表名>
1、单张表联合查询

UNION 合并结果集的时候,如果合并的结果集中有重复行,只会保留其中一行。

实例: 查询出Students表中,将学生编号Sid为2到5的记录和1到3的记录通过UNION联合起来。

实例解析: UNION上面的结果集中有Sid为1、2、3的记录,UNION下面的结果集中有Sid为2、3、4、5的记录。UNION联合时,会只保留重复行(即Sid为2、3的记录)其中的一行。

SELECT * FROM Students
WHERE Sid BETWEEN 2 AND 5
UNION
SELECT * FROM Students
WHERE Sid BETWEEN 1 AND 3

如果想要保留所有重复行,可以使用UNION All合并结果集。

SELECT * FROM Students
WHERE Sid BETWEEN 2 AND 5
UNION ALL
SELECT * FROM Students
WHERE Sid BETWEEN 1 AND 3

2、不同表联合查询

UNION 操作符上下两个结果集的列数必须相等,否则会报错。

最终合并表的列名,由上面的结果集决定。

实例: 将Students表中,生日Sage在1995年之前出生的学生姓名Sname与Teachers表中老师姓名Tname合并。

SELECT Sname FROM Students
WHERE Sage < '1995-01-01'
UNION
SELECT Tname FROM Teachers

3、语句执行顺序

如果后面跟了ORDER BY、LIMIT子句,这些子句不是只作用于最后一个查询语句,而是会等UNION将结果集合并之后再执行。

SELECT * FROM Students
WHERE Sid BETWEEN 2 AND 5
UNION
SELECT * FROM Students
WHERE Sid BETWEEN 1 AND 3
ORDER BY Sid

ORDER BY 会等结果集合并之后,再给整个结果集排序,不是只作用于最后一个查询语句。

LIMIT子句也会等结果集合并之后,再取前几条记录。

SELECT * FROM Students
WHERE Sid BETWEEN 2 AND 5
UNION
SELECT * FROM Students
WHERE Sid BETWEEN 1 AND 3
LIMIT 2

下节课,我们来讲讲聚合函数。

点击关注,更新课程第一时间通知哦~

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵宁一

点赞是最好的赞赏~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值