sqlserver
创建一个临时表,用于演示sqlserver数据库中,union和union all的使用,以及哪一种会去重。假设有一个临时表,存储一年级的学生名字,此处假设名字不重复IF OBJECT_ID('tempdb..#tblGrade1') IS NOT NULL DROP TABLE #tblGrade1; CREATE TABLE #tblGrade1( StuName varchar(50) );
创建另外一个临时表,IF OBJECT_ID('tempdb..#tblGrade2') IS NOT NULL DROP TABLE #tblGrade2; CREATE TABLE #tblGrade2( StuName varchar(50));
往临时表中插入几行测试数据,模拟学生名字,其中两个表中插入一个相同名字的记录insert into #tblGrade1(StuName) values('张三');insert into #tblGrade1(StuName) values('李四');insert into #tblGrade2(StuName) values('王五');insert into #tblGrade2(StuName) values('张三');
查询临时表中的测试数据select * from #tblGrade1;select * from #tblGrade2;
使用union连接两个表的学生名称列,从结果可以看出,union的结果,学生名字是不重复的select StuName from #tblGrade1unionselect StuName from #tblGrade2
使用union all连接两个表的学生名称列,从结果可以看出,union all的结果,是两个表的所有结果select StuName from #tblGrade1union allselect StuName from #tblGrade2
union连接的两个结果集是会自动去重的;union all是所有记录,重复的也出现,因为all的意思就是全部,所以,不去重