union和union all的区别

2024-10-09 09:54:39 浏览数 (3)

一、区别1:取结果的交集 1、union: 对两个结果集进行并集操作, 不包括重复行,相当于distinct, 同时进行默认规则的排序; 2、union all: 对两个结果集进行并集操作, 包括重复行, 即所有的结果全部显示, 不管是不是重复;

二、区别2:获取结果后的操作 1、union: 会对获取的结果进行排序操作 2、union all: 不会对获取的结果进行排序操作

三、区别3:

代码语言:javascript复制
建立表脚本:
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高

0 人点赞