1、我用Toad做演示,我先新建两张table,create table #AA(ID int,name nvarchar(10),age int)
create table #BB(ID int,name nvarchar(10),age int )。
2、分别向两张table插入三条数据,可以用两个班来理解A班有三个学生,B班也有三个学生,为下一步sql语句做准备
insert into #AA select 1,N'张三',10,insert into #AA select 2,N'李四',10
insert into #AA select 3,N'王五',11,insert into #BB select 1,N'张A',10
insert into #BB select 2,N'李B',11,insert into #BB select 3,N'王C',12
3、现在要求AB两个班找出年龄等于10岁的同学,最直接的方法就是:
select * from #AA where age=10
select * from #BB where age=10
但是这样会产生两个结果集,结果不直观
4、接下来用union将这两条sql语句合并起来,F5执行之后,就会发现变成一个结果集。
select * from #AA where age=10
union
select * from #BB where age=10
5、还有一种不用union的做法,sql语句这样写:
select a.*,b.* from #AA a inner join #BB b on a.age=b.age
where a.age=10 and b.age=10
6、对比join与union,可以发现union是完全的结果累加,相当于完美合并,join是属于条件连接。