sql语句中,join,left join中,是将两个或多个表横向连接,而有时,我们需要将几个表或1个表纵向连接,甚至是连接自身,就比如,某些数据库脚本特别不合理的时候,但我们又不能说啥 。。。。郁闷 。。。。
最简单的示例:
select * from a union select * from b
当然,要求a和b的列是一样的。。然后db会把两个表纵向连接,并去掉重复的行。。。
用union all 比单用union的效率要高一些。。。
来看一个比较实用的:
select * from test1 union all
select * from test2 t2
where not exists
(
select * from
(select * from test1) t1
where t2.id = t1.id
)
这里,对某一列进行了限定,即合并时,t2中的某个字段,它的值如果在t1中该列出现,则忽略它。。。。
当然,我用的就是这个sql语句的衍生出的新sql语句。。。。