union和union all的区别
一、区别1:取结果的交集
1、union: 对两个结果集进行并集操作, 不包括重复行,相当于distinct, 同时进行默认规则的排序;
2、union all: 对两个结果集进行并集操作, 包括重复行, 即所有的结果全部显示, 不管是不是重复;
二、区别2:获取结果后的操作
1、union: 会对获取的结果进行排序操作
2、union all: 不会对获取的结果进行排序操作
三、区别3:
建立表脚本: CREATE TABLE `student` ( `id` int NOT NULL AUTO_INCREMENT, `username` varchar(20) DEFAULT NULL, `sex` int DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 student表测试数据: id username sex ------ --------- -------- 1 xiaoming 1 2 xiaohua 0 3 hanmeimei 0 4 allen 1 5 penguin 1 CREATE TABLE `student2` ( `id` int NOT NULL AUTO_INCREMENT, `username` varchar(20) DEFAULT NULL, `sex` int DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb3 student2表测试数据: id username sex ------ --------- -------- 1 xiaoming 1 2 xiaohua 0 3 hanmeimei 0 4 allen 1 5 justin 1 1、union看到结果中去重和排序结果 SELECT * FROM student UNION SELECT * FROM student2 查询返回数据视图 id username sex ------ --------- -------- 1 xiaoming 1 2 xiaohua 0 3 hanmeimei 0 4 allen 1 5 penguin 1 5 justin 1 2、union all 结果中的结果合并 SELECT * FROM student UNION ALL SELECT * FROM student2 查询返回数据视图 id username sex ------ --------- -------- 1 xiaoming 1 2 xiaohua 0 3 hanmeimei 0 4 allen 1 5 penguin 1 1 xiaoming 1 2 xiaohua 0 3 hanmeimei 0 4 allen 1 5 justin 1
四、总结
union all只是合并查询结果,并不会进行去重和排序操作,在没有去重的前提下,使用union all的执行效率要比union高
浙公网安备 33010602011771号