Union と Union All の違い
2 つの select ステートメントの結果を全体として表示する必要がある場合は、union または Union all キーワードを使用する必要があります。 Union (または Union) の機能は、複数の結果を結合して一緒に表示することです。
Union と Union All の違いは、Union は複数の結果セット内の重複した結果を自動的に圧縮するのに対し、Union All は重複かどうかに関係なくすべての結果を表示することです。
Union: 重複行を除く 2 つの結果セットに対して結合操作を実行し、デフォルトのルールに従って並べ替えます。
Union All: 重複行を含む 2 つの結果セットに対して結合操作を実行します。
Intersect: を実行します。 2 つの結果セットで重複行を除外し、同時にデフォルト ルールで並べ替えます。
マイナス: 重複行を除外して、2 つの結果セットで差分操作を実行し、同時にデフォルト ルールで並べ替えます。
最後の結果セットに Order by 句を指定して、並べ替え方法を変更できます。
例:
selectemployee_id,job_id from members
union
selectemployee_id,job_id from job_history
上記は 2 つのテーブルの結果を結合します。これら 2 つの例では、2 つの select ステートメントの結果の重複する値が圧縮されます。つまり、結果データは 2 つの結果の数の合計ではありません。重複した結果を表示したい場合は、union all を使用できます。例:
2 Oracle の scott ユーザーには、テーブル emp
select * from emp where deptno >= 20
union all
select * from emp があります。ここで deptno ここでの結果には重複する値が多数含まれています。
Union と Union All キーワードについて注意すべき点は次のとおりです:
Union と Union All は両方とも、2 つだけではなく、複数の結果セットを結合できます。
Union と Union All を使用する場合は、各選択セットの結果が同じ数の列を持ち、各列の型が同じであることを確認する必要があります。ただし、列名は必ずしも同じである必要はありません。Oracle は最初の結果の列名を結果セットの列名として使用します。たとえば、以下は例です。
select empno,ename from emp
union
select deptno,dname from dept
各選択結果セットで order by 句を使用して並べ替える必要はありません。順序を使用できます。最後に結果全体を並べ替えます。例:
select empno,ename from emp
union
select deptno,dname from dept
order by ename;