PostgreSQL Union、Union ALL の例
⚡ スマートサマリー
PostgreSQL UNIONは、2つ以上のSELECT文の結果を1つの結果セットに結合し、重複する行を削除します。一方、UNION ALLはすべての行を保持するため、重複が問題にならない場合にはより高速なオプションとなります。

何ですか PostgreSQL 連合?
その PostgreSQL UNION 演算子は、複数の SELECT ステートメントの結果セットを 1 つの結果セットに結合するために使用されます。SELECT ステートメントの結果の重複行は削除されます。UNION 演算子は、次の 2 つの条件下で機能します。
- SELECTクエリは、同じ数の列を返す必要があります。
- 対応するすべての列のデータ型には互換性がある必要があります。
UNION 演算子は通常、完全に正規化されていない関連テーブルのデータを結合するために使用されます。
構文
SELECT expression_1, expression_2, ... expression_n FROM tables [WHERE condition(s)] UNION SELECT expression_1, expression_2, ... expression_n FROM tables [WHERE condition(s)];
上記のパラメータの説明は次のとおりです。
expression_1、expression_2、…expression_n は、取得する必要がある計算または列です。
テーブルは、レコードを取得する必要があるテーブルです。
WHERE 条件は、レコードを取得するために満たさなければならない条件です。
注意: UNION演算子は重複を返さないため、UNION DISTINCTを使用しても結果に影響はありません。
PostgreSQL Union
UNION演算子は重複を削除します。 SELECT DISTINCT そうです。では、これを実演してみましょう。Demoという名前のデータベースがあり、以下のテーブルが含まれています。
本:
価格:
次のコマンドを実行してみましょう。
SELECT id FROM Book UNION SELECT id FROM Price;
コマンドは以下を返します。
id 列は、Book テーブルと Price テーブルの両方に表示されます。 ただし、結果には XNUMX 回しか表示されません。 その理由は、 PostgreSQL UNION演算子は重複を返しません。
PostgreSQL ユニオンオール
この演算子は、重複を削除せずに、複数の SELECT ステートメントの結果セットを結合します。この演算子では、各 SELECT ステートメントに、同様のデータ型の結果セット内のフィールド数が同数である必要があります。
構文:
SELECT expression_1, expression_2, ... expression_n FROM tables [WHERE condition(s)] UNION ALL SELECT expression_1, expression_2, ... expression_n FROM tables [WHERE condition(s)];
上記のパラメータの説明は次のとおりです。
expression_1、expression_2、…expression_n は、取得する必要がある計算または列です。
テーブルは、レコードを取得する必要があるテーブルです。
WHERE 条件は、レコードを取得するために満たさなければならない条件です。
注意: 両方のSELECT文は、同じ数の式を持つ必要があります。
次の表を使用します。
本:
価格:
次のコマンドを実行します。
SELECT id FROM Book UNION ALL SELECT id FROM price;
次のような結果が返されます。
重複は削除されていません。
ORDER BY
その PostgreSQL UNION 演算子は、ORDER BY 句と一緒に使用して、クエリ結果を順序付けることができます。これを説明するには、次のテーブルを使用します。
価格:
価格2:
UNION 演算子を ORDER BY 句と組み合わせて使用する方法を示すコマンドを次に示します。
SELECT * FROM Price UNION SELECT * FROM Price2 ORDER BY price;
コマンドは以下を返します。
レコードは価格列によって並べられました。 この句は、デフォルトでレコードを昇順に並べます。 降順に並べ替えるには、以下に示すように DESC 句を追加します。
SELECT * FROM Price UNION SELECT * FROM Price2 ORDER BY price DESC;
コマンドは以下を返します。
レコードは、価格列に基づいて降順に並べられています。
UnionとUnion Allはそれぞれいつ使うべきか?
UNION演算子は、構造が似ているものの何らかの理由で分割された複数のテーブルがある場合に使用します。重複レコードを削除または排除する必要がある場合に便利です。
重複レコードを削除または排除する必要がない場合は、UNION ALL演算子を使用してください。
pgAdminの使用
それでは、pgAdminを使ってこれら3つの操作を実行する方法を見ていきましょう。
使い方 PostgreSQL pgAdminを使用したユニオン
以下は、使用方法に関する手順です。 PostgreSQL pgAdmin を介した UNION:
ステップ1) pgAdmin アカウントにログインします。
ステップ2) 左側のナビゲーションバーから「データベース」をクリックし、次に「デモ」をクリックします。
ステップ3) クエリ エディターにクエリを入力します。
SELECT * FROM Price UNION SELECT * FROM Price2 ORDER BY price DESC;
ステップ4) 「実行」ボタンをクリックします。
次のような結果が返されます。
ユニオンオール
ステップ1) pgAdmin アカウントにログインします。
ステップ2) 左側のナビゲーションバーから「データベース」をクリックし、次に「デモ」をクリックします。
ステップ3) クエリ エディターにクエリを入力します。
SELECT id FROM Book UNION ALL SELECT id FROM price;
ステップ4) 「実行」ボタンをクリックします。
次のような結果が返されます。
ORDER BY
UNION ALL 演算子を ORDER BY 句と組み合わせて、結果セット内の結果を順序付けることができます。例:
SELECT id FROM Book UNION ALL SELECT id FROM price ORDER BY id;
コマンドは以下を返します。
結果は注文されました。

















