PostgreSQL IN 句

Postgresql In Ju



PostgreSQL には利用できる句がたくさんあります。 IN 句はこれらの句の 1 つであり、特に WHERE 句と組み合わせた場合の使用方法を理解すると、多くの利点があります。 IN 句は主に SELECT ステートメントと連携して、クエリの実行方法をフィルタリングします。 IN 句を実行すると、指定されたリストが条件に一致するかどうかがチェックされ、一致する値が出力されます。

PostgreSQL IN 句の使用方法を理解する

PostgreSQL では、IN 句と WHERE 句を使用して、値のリストと照合することで出力をフィルタリングし、結果はブール値になります。

使用する構文は次のとおりです。







値 IN (値 1、値 2、値_n);

指定された構文は値を取得し、value1、value2、および value_n と照合してチェックします。一致するものがあればブール値を返します。チェックする値のリストには、文字列や整数を含む任意のリテラル タイプを使用できます。さらに、SELECT ステートメントなどのサブクエリを作成できます。



PostgreSQL IN 演算子のさまざまな使用方法について説明します。



1. サブクエリの操作

前述したように、チェックする値は、SELECT などのクエリ ステートメントを使用して値を抽出するサブクエリにすることができます。このようにして、テーブルにクエリを実行して、特定の列の値を確認できます。例として次の表を使用してみましょう。





「order_id」がクエリ セクションで指定された値のいずれかであるすべての顧客をチェックするとします。ターゲット値をステートメントの最初の部分として追加し、WHERE 句と IN 句を使用してクエリを作成します。



クエリは次のように表示されます。

PostgreSQL は、「customers」テーブルの「order_id」列をチェックし、「order_id」が括弧内に指定したもののいずれかに一致するすべてのレコードを返します。

最初の例では、値の整数リストのケースを使用しました。文字列と照合することもできます。指定したすべての文字列がターゲット値と一致しない場合は、何も返されないことに注意してください。次の例には、表に存在しない文字列がいくつか含まれています。このような文字列はスキップされ、一致する文字列のみが次の出力に表示されます。

2. IN(SELECT) の操作

値のリストを手動で指定しても機能しない場合があります。 SELECT ステートメントを使用してテーブルから値のリストをフェッチし、それらを使用してターゲット値と照合することを選択できます。次のテーブルをデータベースに追加すると、前の「customers」テーブルと組み合わせてサブクエリを作成できます。

ターゲット値 (order_id) が「customers」テーブルにある場合にのみ、「orders」テーブルのレコードを表示したいとします。ここで、「customers.order_id」列は値のリストであり、その値を「orders.order_id」列の値と照合します。

この場合、検索に一致するエントリは 3 つだけであり、それが PostgreSQL の IN(SELECT) 句の出力として得られます。

3. NOT IN PostgreSQL 句の使用

前のコマンドを使用すると、ターゲット値と一致しない他の値を表示するように選択できます。そのために、IN 句の動作とは逆のことを行います。したがって、コマンドが NOT IN であることを否定します。

新しいコマンドの書き方は次のとおりです。

例 2 で得た出力とは異なる出力が得られることに注意してください。これは、IN 句の代わりに NOT IN を使用しているためです。

理想的には、PostgreSQL の IN 句で得られた結果を否定したい場合は常に NOT を追加できます。応用は無限にあります。値をチェックして一致するものをすぐに確認したい場合は、IN 句が最適です。

結論

IN 句は WHERE 句と連携して、値のリストに対してターゲット値をチェックします。 IN 句は、指定した値のリストにターゲット値が一致するかどうかを確認するブール値を返します。値をリテラルとして指定することも、SELECT ステートメントを使用して使用するサブクエリを作成することもできます。 PostgreSQL の IN 句の使用方法について 3 つの例を示しました。 PostgreSQL の IN 句の操作方法を理解するための洞察が得られたことを願っています。