SQL零基础入门教程,贼拉详细!贼拉简单! 速通数据库期末考!(九)

UNION ALL

UNION ALL 用于合并两个或多个 SELECT 语句的结果

请注意,UNION ALL 合并的每个 SELECT 语句必须是查询相同数量,相同数据类型的字段,且顺序也必须一致 。另外结果集中的列名总是等于 UNION ALL 中第一个 SELECT 语句中的列名

语法:

sql 复制代码
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;

示例:

从students学生数据表查询理科三班和文科三班的学生id,学生姓名,班级

写法一:

使用我们之前的学习的 WHERE ... IN ... 方式:

sql 复制代码
SELECT id,name,clazz
FROM students
WHERE clazz IN ('理科三班','文科三班');

写法二:

使用 UNION ALL 结合两个 SELECT 查询的方式:

sql 复制代码
SELECT id,name,clazz
FROM students
WHERE clazz = '理科三班'
UNION ALL
SELECT id,name,clazz
FROM students
WHERE clazz = '文科三班';

观察这两种写法的结果,写法一的结果中理科三班和文科三班的数据行是交错分布的,但是写法二的结果明显是分别从students表中查询出两部分结果,再纵向拼接而成的,这也是使用 UNION ALL的前提是每个SELECT查询的字段完全一致的原因。

带有 ORDER BY 的 UNION ALL

思考一个问题,如果我希望在 UNION ALL 后的结果中进行排序操作,那是不是每个 SELECT 语句都要加 ORDER BY 呢?

来测试一下:

从students学生数据表查询理科三班和文科三班的学生id,学生姓名,班级,并且按学生ID升序排列

错误写法:

sql 复制代码
SELECT id,name,clazz
FROM students
WHERE clazz = '理科三班'
ORDER BY id
UNION ALL
SELECT id,name,clazz
FROM students
WHERE clazz = '文科三班'
ORDER BY id;

很明显,这种写法是不行的,报错 Incorrect usage of UNION and ORDER BY,意思为 不正确地使用UNION和ORDER BY

正确写法:

sql 复制代码
SELECT id,name,clazz
FROM students
WHERE clazz = '理科三班'
UNION ALL
SELECT id,name,clazz
FROM students
WHERE clazz = '文科三班'
ORDER BY id;

使用UNION命令时需要注意,只能在最后使用一个ORDER BY命令,是将两个查询结果合在一起之后,再进行排序!

UNION

UNION 同样用于合并两个或多个 SELECT 语句的结果 。与 UNION ALL 唯一不同的地方在于 UNION 对查询结果进行去重操作,对所有重复出现的相同数据行只保留一行结果,其用法与 UNION ALL 完全一致。

此处不再过多赘述,大家自己尝试一下即可。

本专栏将持续更新,对数据库SQL感兴趣的同学可以关注一下,谢谢!

相关推荐
神明不懂浪漫37 分钟前
【第七章】Java中的常用类
java·开发语言·前端·经验分享·笔记
流星白龙7 小时前
【Redis】2.Redis重大版本
数据库·redis·junit
流星白龙7 小时前
【Redis】7.Hash表
数据库·redis·哈希算法
流星白龙8 小时前
【Redis】4.基本全局命令
数据库·redis·缓存
王八八。9 小时前
Navicat 17破解版下载安装教程 附安装激活步骤(2026 最新版)
数据库·navicat
shawxlee10 小时前
vue3在public下封装config.js自定义配置动态数据,可在打包后直接修改,方便后端部署及后续维护
前端·javascript·经验分享·vue·团队开发·js·项目优化
Jelena1577958579210 小时前
电商运营分析数据比价接口实战:多平台价格监控与智能决策系统
java·大数据·数据库
流星白龙11 小时前
【Redis】3.Redis安装与命令行客户端
数据库·redis·缓存
GeekArch12 小时前
第28讲:避坑——AI堆栈分配错误、栈溢出BUG
c语言·人工智能·stm32·mcu·学习·bug
凌虚12 小时前
基于 PostgreSQL WAL 构建 CDC 系统:原理与工程实现
数据库·后端·postgresql