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 という名前のデータベースがあります。

本:

PostgreSQL Union

価格:

PostgreSQL Union

次のコマンドを実行してみましょう。

SELECT id
FROM Book
UNION
SELECT id
FROM Price;

コマンドは以下を返します。

PostgreSQL Union

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 条件は、レコードを取得するために満たさなければならない条件です。

注: 両方の式に同じ数の式が含まれている必要があります。

次の表を使用します。

本:

PostgreSQL ユニオンオール

価格:

PostgreSQL ユニオンオール

次のコマンドを実行します。

 
SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

次のような結果が返されます。

PostgreSQL ユニオンオール

重複は削除されていません。

ORDER BY

この PostgreSQL UNION 演算子は、ORDER BY 句と一緒に使用して、クエリ結果を順序付けることができます。これを説明するには、次のテーブルを使用します。

価格:

ORDER BY

価格2:

ORDER BY

UNION 演算子を ORDER BY 句と組み合わせて使用​​する方法を示すコマンドを次に示します。

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price;

コマンドは以下を返します。

ORDER BY

レコードは価格列によって並べられました。 この句は、デフォルトでレコードを昇順に並べます。 降順に並べ替えるには、以下に示すように DESC 句を追加します。

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price DESC;

コマンドは以下を返します。

ORDER BY

レコードは、価格列に基づいて降順に並べられています。

いつユニオンを使用するか、いつユニオンを使用するか?

同様の構造を持つ複数のテーブルがあり、何らかの理由で分割されている場合は、UNION 演算子を使用します。重複レコードを削除/排除する必要がある場合に適しています。

重複レコードを削除/排除する必要がない場合は、UNION ALL 演算子を使用します。

pgAdminの使用

次に、pgAdmin を使用して XNUMX つのアクションすべてがどのように実行されるかを見てみましょう。

使い方 PostgreSQL pgAdminを使用したユニオン

以下は使用方法のステップバイステップのプロセスです PostgreSQL pgAdminを使用したユニオン

pgAdmin を使用して同じことを実行するには、次の手順を実行します。

ステップ1) サインイン
pgAdmin アカウントにログインします。

ステップ2) 「データベース」をクリックします

  1. 左側のナビゲーション バーで、[データベース] をクリックします。
  2. 「デモ」をクリックします。

  PostgreSQL pgAdminを使用したユニオン

ステップ3) クエリを入力します
クエリ エディターにクエリを入力します。

SELECT *
FROM Price
UNION
SELECT *
FROM Price2
ORDER BY price DESC;

ステップ4) 「実行」ボタンをクリックします。
次に、「実行」ボタンをクリックします。 下の画像に示すように。

  PostgreSQL pgAdminを使用したユニオン

次のような結果が返されます。

  PostgreSQL pgAdminを使用したユニオン

ユニオンオール

ステップ1) pgAdmin アカウントにログインします。

ステップ2)

  1. 左側のナビゲーション バーで、[データベース] をクリックします。
  2. 「デモ」をクリックします。

  PostgreSQL pgAdmin を使用したすべてのユニオン

ステップ3) クエリ エディターにクエリを入力します。

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price;

ステップ4) 「実行」ボタンをクリックします。

  PostgreSQL pgAdmin を使用したすべてのユニオン

次のような結果が返されます。

  PostgreSQL pgAdmin を使用したすべてのユニオン

ORDER BY

UNION ALL 演算子を ORDER BY 句と組み合わせて、結果セット内の結果を順序付けることができます。例:

SELECT id
FROM Book
UNION ALL
SELECT id
FROM price
ORDER BY id;

コマンドは以下を返します。

  PostgreSQL pgAdminを使用して注文する

結果は注文されました。

要約

  • この PostgreSQL UNION演算子は複数の結果を結合します SELECTステートメント XNUMX つの結果セットにまとめられます。
  • UNION 演算子は重複レコードを返しません。
  • 結果を並べ替えるには、ORDER BY 句と組み合わせます。
  • UNION ALL 演算子は、複数の SELECT ステートメントの結果を 1 つの結果セットに結合します。
  • UNION ALL 演算子は重複を削除しません。

このチュートリアルで使用するデータベースをダウンロードする

毎日のGuru99ニュースレター

今すぐ配信される最新かつ最も重要な AI ニュースで一日を始めましょう。