要將來自多個表的數據組織到一起,就像將一個結果集疊加到另外一個上面一樣。 這些表不必有相同的關鍵字,但是他們對應列的數據類型必須相同。
使用union all 把多個表中的行組合到一起。
select ename, deptno from emp where deptno = 10union allselect '-----', deptno from deptunion allselect dname, deptno from dept;UNION ALL將多個來源的行組合起來,放到一個結果集中。 所有select列表中的項目數和對應項目的數據類型必須要匹配。
UNION ALL會包括重復的項目,如果要篩選掉重復項,可以使用UNION運算符。
如果使用UNION而不是UNION ALL,很可能是為了去除重復項而進行排序操作。 在處理大結果集時要記住,使用UNION子句大致相當于下面的查詢,對UNION ALL子句的查詢結果使用DISTINCT子句
SQL> select distinct deptno 2 from (select deptno from dept 3 union all 4 select deptno from dept);DEPTNO------ 30 20 40 10SQL> SQL> select deptno 2 from dept 3 union 4 select deptno from dept 5 ;DEPTNO------ 10 20 30 40SQL> 通常,查詢中不要使用distinct,除非確定有必要這樣做; 對于UNION而言也是如初,除非確定有必要,一般使用UNION ALL,而不適用UNION。多表有一些相同的列,或者有些列的值相同,需要通過關聯這些列得到結果。
第二種解決方式是利用顯示的JOIN子句(inner 關鍵字可省略),如果希望將聯接邏輯關系放在from子句中,而不是在where 子句中,可以使用JOIN子句, 這兩種方式都符合ANSI標準。
新聞熱點
疑難解答