多语言展示
当前在线:1319今日阅读:175今日分享:29

union 和 union all 哪一个会去掉重复的数据?

数据库中的 union 和 union all 是两种连接方式,其中的一种会去掉重复的结果,另外一种是不会去掉重复值的。那么,到底哪一种会去重呢?本文将为您详细演示
工具/原料

sqlserver

方法/步骤
1

创建一个临时表,用于演示sqlserver数据库中,union和union all的使用,以及哪一种会去重。假设有一个临时表,存储一年级的学生名字,此处假设名字不重复IF OBJECT_ID('tempdb..#tblGrade1') IS NOT NULL DROP TABLE #tblGrade1; CREATE TABLE #tblGrade1(    StuName varchar(50) );

2

创建另外一个临时表,IF OBJECT_ID('tempdb..#tblGrade2') IS NOT NULL DROP TABLE #tblGrade2; CREATE TABLE #tblGrade2(    StuName varchar(50));

3

往临时表中插入几行测试数据,模拟学生名字,其中两个表中插入一个相同名字的记录insert into #tblGrade1(StuName) values('张三');insert into #tblGrade1(StuName) values('李四');insert into #tblGrade2(StuName) values('王五');insert into #tblGrade2(StuName) values('张三');

4

查询临时表中的测试数据select * from #tblGrade1;select * from #tblGrade2;

5

使用union连接两个表的学生名称列,从结果可以看出,union的结果,学生名字是不重复的select StuName from #tblGrade1unionselect StuName from #tblGrade2

6

使用union all连接两个表的学生名称列,从结果可以看出,union all的结果,是两个表的所有结果select StuName from #tblGrade1union allselect StuName from #tblGrade2

7

union连接的两个结果集是会自动去重的;union all是所有记录,重复的也出现,因为all的意思就是全部,所以,不去重

推荐信息