PostgreSQL Union、Union ALL の例
何ですか PostgreSQL 連合?
この PostgreSQL UNION 演算子は、複数の SELECT ステートメントの結果セットを 1 つの結果セットに結合するために使用されます。SELECT ステートメントの結果の重複行は削除されます。UNION 演算子は、次の 2 つの条件下で機能します。
- SELECT クエリは、同様の数のクエリを返さなければなりません (MUST)。
- 対応するすべての列のデータ型には互換性がある必要があります。
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 演算子は重複を削除します。これを説明しましょう。
次のテーブルを含む 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 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 演算子を使用します。
pgAdminの使用
次に、pgAdmin を使用して XNUMX つのアクションすべてがどのように実行されるかを見てみましょう。
使い方 PostgreSQL pgAdminを使用したユニオン
以下は使用方法のステップバイステップのプロセスです PostgreSQL pgAdminを使用したユニオン
pgAdmin を使用して同じことを実行するには、次の手順を実行します。
ステップ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;
コマンドは以下を返します。
結果は注文されました。
要約
- この PostgreSQL UNION演算子は複数の結果を結合します SELECTステートメント XNUMX つの結果セットにまとめられます。
- UNION 演算子は重複レコードを返しません。
- 結果を並べ替えるには、ORDER BY 句と組み合わせます。
- UNION ALL 演算子は、複数の SELECT ステートメントの結果を 1 つの結果セットに結合します。
- UNION ALL 演算子は重複を削除しません。