PostgreSQL EXISTS と SELECT が同時に有効です Operator(例)
⚡ スマートサマリー
PostgreSQL EXISTSは、相関サブクエリが行を返すかどうかをテストするブール演算子であり、SELECT、INSERT、UPDATE、DELETE文が一致するレコードの有無に基づいてデータを効率的にフィルタリングできるようにします。

存在するものは PostgreSQL?
その PostgreSQL 存在する EXISTS演算子は、サブクエリ内に行が存在するかどうかをテストします。つまり、この演算子はサブクエリと組み合わせて使用されます。サブクエリ内に少なくとも1つの行が見つかった場合、EXISTS演算子の条件が満たされたとみなされます。この操作は、SELECT、UPDATE、INSERT、およびDELETEステートメントと組み合わせて使用できます。
PostgreSQL EXISTSクエリ構文
の構文は次のとおりです。 PostgreSQL EXISTS ステートメント:
WHERE EXISTS (subquery);
上記の構文は、EXISTS演算子が引数としてサブクエリを取ることを示しています。サブクエリは単純に SELECTステートメント 列名や式のリストではなく、SELECT * で始まる必要があります。
PostgreSQL SELECT文でEXISTSを使用する
SELECT文でEXISTS演算子を使用する方法を見ていきましょう。以下のテーブルがあります。
本:
価格:
次のステートメントを実行します。
SELECT * FROM Book WHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
これにより、次が返されます。
上記のコマンドは、ID がサブクエリによる任意のレコードの ID と一致する Book テーブル内のすべてのレコードを返す必要があります。 一致した ID は XNUMX つだけでした。 したがって、返されたレコードは XNUMX つだけです。
PostgreSQL INSERT文でEXISTSが存在します
EXISTS演算子は、 INSERT ステートメント次の 3 つのテーブルがあります。
本:
価格:
価格2:
次に、次のステートメントを実行します。
INSERT INTO Price SELECT id, price FROM Price2 WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
価格表は次のようになりました。
Price5 という名前のテーブル内の ID が 2 の行が一致しました。 このレコードはその後、Price テーブルに挿入されました。
PostgreSQL UPDATE文でEXISTSを使用する
UPDATE ステートメントでは EXISTS 演算子を使用できます。
次のクエリを実行します。
UPDATE Price SET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id) WHERE EXISTS (SELECT id, price FROM Price2 WHERE Price2.id = Price.id);
価格表の価格列を更新しています。 私たちの目的は、ID を共有するアイテムの価格を同じにすることです。 5 行、つまり XNUMX 行だけが一致しました。
ただし、価格は同じ 205 であるため、更新は行われませんでした。 違いがある場合は、更新が行われます。
PostgreSQL DELETE文でEXISTSを使用する
A PostgreSQL DELETE ステートメントでは EXISTS 演算子を使用できます。次に例を示します。
DELETE FROM Price WHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
価格表は次のようになりました。
ID が 5 の行が削除されました。
PostgreSQL pgAdminを使用したEXISTSステートメント
SQLシェル以外にも、同じEXISTSクエリをpgAdminインターフェースを通して視覚的に実行できます。それでは、pgAdminを使ってこれらの操作を実行する方法を見ていきましょう。
SELECT文を使用
EXISTSクエリを使用する手順は次のとおりです。 PostgreSQL pgAdminを使用したSELECT文の場合:
ステップ1) pgAdminアカウントにログインしてください。pgAdminを開き、認証情報を使用してアカウントにログインしてください。
ステップ2) デモデータベースを作成します。
- 左側のナビゲーション バーで、[データベース] をクリックします。
- 「デモ」をクリックします。
ステップ3) クエリ エディターに次のクエリを入力します。
SELECT * FROM Book WHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
ステップ4) 「実行」ボタンをクリックします。
次のような結果が返されます。
INSERT文あり
pgAdmin を使用して同じことを実行するには、次の手順を実行します。
ステップ1) pgAdmin アカウントにログインします。
ステップ2)
- 左側のナビゲーション バーで、[データベース] をクリックします。
- 「デモ」をクリックします。
ステップ3) クエリ エディターにクエリを入力します。
INSERT INTO Price SELECT id, price FROM Price2 WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
ステップ4) 「実行」ボタンをクリックします。
価格表は次のようになります。
UPDATE文あり
pgAdmin を使用して同じことを実行するには、次の手順を実行します。
ステップ1) pgAdmin アカウントにログインします。
ステップ2)
- 左側のナビゲーション バーで、[データベース] をクリックします。
- 「デモ」をクリックします。
ステップ3) クエリ エディターにクエリを入力します。
UPDATE Price SET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id) WHERE EXISTS (SELECT id, price FROM Price2 WHERE Price2.id = Price.id);
ステップ4) 「実行」ボタンをクリックします。
価格表は次のようになります。
DELETE文あり
pgAdmin を使用して同じことを実行するには、次の手順を実行します。
ステップ1) pgAdmin アカウントにログインします。
ステップ2)
- 左側のナビゲーション バーで、[データベース] をクリックします。
- 「デモ」をクリックします。
ステップ3) クエリ エディターにクエリを入力します。
DELETE FROM Price WHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
ステップ4) 「実行」ボタンをクリックします。
価格表は次のようになります。





















