1. ホーム
  2. sql

[解決済み] UNIONとUNION ALLの違いは何ですか?

2022-03-15 04:50:30

質問

とはどのような違いがあるのでしょうか? UNIONUNION ALL ?

解決方法は?

UNION は、重複するレコード(結果のすべての列が同じ)を削除します。 UNION ALL はしません。

を使用すると、パフォーマンスが低下します。 UNION の代わりに UNION ALL なぜなら、データベース・サーバーは重複した行を削除するために追加作業をしなければなりませんが、通常、重複は必要ないからです(特にレポートを作成する場合)。

重複を識別するためには、レコードが比較可能な型であると同時に、互換性のある型である必要があります。これは、SQLシステムに依存します。例えば、システムは長いテキストフィールドをすべて切り捨てて短いテキストフィールドにして比較したり(MS Jet)、バイナリフィールドの比較を拒否することがあります(ORACLE)。

UNIONの例。

SELECT 'foo' AS bar UNION SELECT 'foo' AS bar

結果

+-----+
| bar |
+-----+
| foo |
+-----+
1 row in set (0.00 sec)

UNION ALLの例です。

SELECT 'foo' AS bar UNION ALL SELECT 'foo' AS bar

結果

+-----+
| bar |
+-----+
| foo |
| foo |
+-----+
2 rows in set (0.00 sec)