MySQL使用UNION和UNION ALL关键字合并查询结果

本文详细介绍了如何使用SQL的UNION和UNIONALL关键字进行合并查询,包括两者的区别及应用场景,通过实例展示了如何将不同表中的数据进行合并,以及如何处理重复数据。

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

合并查询结果是将多个SELECT语句的查询结果合并到一起。合并查询结果使用UNION和UNION ALL关键字。

(1)使用UNION关键字是将所有查询结果合并到一起,然后去除相同的记录

(2)使用UNION ALL关键字则是将所有的结果合并到一起。

从效率上说,UNION ALL要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复的数据的话,那么就使用UNION ALL。

示例:使用UNION和UNION ALL关键字将用户1表和用户2表的姓名字段的数据合并到一起。

首先创建用户1表和用户2表,并添加相关数据。

-- 创建用户1表
CREATE TABLE tb_user1(
	user_name VARCHAR(30)
);

-- 添加数据到用户1表
INSERT INTO tb_user1 VALUES('pan_junbiao的博客'),('KevinPan'),('Johnny'),('Matthew');

-- 创建用户2表
CREATE TABLE tb_user2(
	user_name VARCHAR(30)
);

-- 添加数据到用户2表
INSERT INTO tb_user2 VALUES('pan_junbiao的博客'),('KevinPan'),('Karl'),('Vivien');

1、使用UNION关键字

SELECT user_name FROM tb_user1
UNION
SELECT user_name FROM tb_user2

执行结果:

结果显示,使用UNION关键字将所有的查询结果合并到了一起,并去除了重复值。

2、使用UNION ALL关键字

SELECT user_name FROM tb_user1
UNION ALL
SELECT user_name FROM tb_user2

执行结果:

结果显示,使用UNION ALL关键字将所有的查询结果合并到了一起。

 

MySQL中,UNIONUNION ALL关键字都用于合并两个或多个SELECT语句的结果集,但它们在处理重复行排序方面有所不同。以下是具体的解释示例。 参考资源链接:[MySQL unionunion all的区别详解:去重与排序](https://wenku.csdn.net/doc/64534d9aea0840391e77960c?spm=1055.2569.3001.10343) 首先,来看看UNION。它在合并结果集时会自动去除重复的行。这意味着如果你从两个表中查询相同的数据,UNION只会将每条唯一的记录加入到最终结果集中。默认情况下,使用UNION进行查询还会对结果集进行排序。例如,有两个表`t_demo``t_demo_copy`,它们都包含相同的列(id, name, age, num),但可能包含不同的数据或重复的数据。 以下是使用UNION合并这两个表查询,并去除重复行的示例: ```sql SELECT id, name, age, num FROM t_demo UNION SELECT id, name, age, num FROM t_demo_copy; ``` 在这个例子中,假设`id`列是主键,因此每个行的组合都是唯一的。执行上述查询后,你会得到一个包含所有不重复行的列表,而且这个列表默认是按照列的自然顺序(即SELECT语句中列的顺序)排序的。 而UNION ALL则不同,它不会去重也不会排序。如果两个表中有相同的数据行,它们都会在最终的结果集中显示。这在需要获取所有数据(包括重复行)进行分析或统计时非常有用。使用UNION ALL的示例如下: ```sql SELECT id, name, age, num FROM t_demo UNION ALL SELECT id, name, age, num FROM t_demo_copy; ``` 在这个例子中,无论数据是否重复,都会原样展示。这样可以提高查询效率,因为数据库不需要执行额外的去重操作。然而,结果集可能不会排序,除非你明确指定了ORDER BY子句。 综上所述,UNIONUNION ALL使用取决于你的具体需求。如果需要结果集不重复且自动排序,使用UNION;如果需要包含所有数据并提高查询效率,使用UNION ALL。更深入地了解这些操作的细微差别,你可以参考这份资料:《MySQL unionunion all的区别详解:去重与排序》。它详细解释了这两种操作的区别,并提供了更多实战示例,帮助你更好地掌握它们的使用方法。 参考资源链接:[MySQL unionunion all的区别详解:去重与排序](https://wenku.csdn.net/doc/64534d9aea0840391e77960c?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

pan_junbiao

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值