sql语句合并的方式要依据sql语句本身的内容而定,如果两条sql里的内容是查询同一个表的,那么可以直接合并,如果是不同的表,就要看是否有主键外键关联(join),如果完全不相干的两条sql语句要合并,就用union
举个例子:
我用Toad做演示,我先新建两张table,create table #AA(ID int,name nvarchar(10),age int)create table #BB(ID int,name nvarchar(10),age int )
分别向两张table插入三条数据,可以用两个班来理解A班有三个学生,B班也有三个学生,为下一步sql语句做准备
insert into #AA select 1,N&#39张三&#39,10
insert into #AA select 2,N&#39李四&#39,10
insert into #AA select 3,N&#39王五&#39,11
insert into #BB select 1,N&#39张A&#39,10
insert into #BB select 2,N&#39李B&#39,11
insert into #BB select 3,N&#39王C&#39,12
现在要求AB两个班找出年龄等于10岁的同学,最直接的方法就是:select * from #AA where age=10
select * from #BB where age=10但是这样会产生两个结果集,结果不直观!
接下来用union将这两条sql语句合并起来,F5执行之后,就会发现变成一个结果集!
select * from #AA where age=10
union
select * from #BB where age=10
还有一种不用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
这种写法就是要找出主键外键的关联关系,但是结果就不好直观来阅读,因为结果集是混乱的
对比join与union,可以发现union是完全的结果累加,相当于完美合并,join是属于条件连接,要依据实例来判断什么时候该用join,什么时候该用union