Oracle中的UNION查询主要分为两种:UNION和UNION ALL
下面举例说明两种语句的用法,建两张表TESTA和TESTB如下图:
一、UNION ALL语句
UNION ALL语句的目的是把两个SQL语句的结果取并集,所以就要求两个SQL的SELECT语句中的字段是一致的,SQL如下:
SELECT FILED1,FILED2 FROM TESTA
UNION ALL
SELECT FILED1,FILED2 FROM TESTB;
查询出来的视图如下:
可以看出上面的结果就是两个SQL结果的简单拼接。
二、UNION语句
UNION语句和UNION ALL一样,都是把两个SQL的结果取并集,不一样的是UNION会同时排除相同的数据行,SQL如下:
SELECT FILED1,FILED2 FROM TESTA
UNION
SELECT FILED1,FILED2 FROM TESTB;
查询出来的视图如下:
可以看出查出的结果集比UNION ALL少了两条,并且没有重复的。
由于UNION做了排序和去重的操作,所以从效率上讲UNION ALL的速度比UNION要快很多。如果确定两个SQL的查询结果中没有重复的记录,就尽量使用UNION ALL。