SQLにおいて、existsとinの違いは何ですか?
SQLにおいて、EXISTSとINはどちらもサブクエリに使用されますが、それらの目的と振る舞いは異なります。
- 子クエリが結果を返すかどうかをチェックするために、EXISTSが使用されます。子クエリが1行以上の結果を返す場合、EXISTSはTRUEを返します。一方、結果が0行の場合はFALSEを返します。通常、EXISTSは外部クエリとサブクエリを関連付け、サブクエリの結果に基づいて外部クエリの結果セットをフィルタリングするために使用されます。
例えば、次のクエリは、少なくとも1つの注文を持つすべての顧客を返します。
SELECT *
FROM customers
WHERE EXISTS (
SELECT *
FROM orders
WHERE orders.customer_id = customers.customer_id
);
- INは、指定されたリストやサブクエリ内に値が存在するかどうかをチェックするために使用されます。値がリストやサブクエリ内に存在する場合、INはTRUEを返し、そうでない場合はFALSEを返します。INは通常、特定の値を持つ行を選択するために使用されます。
例えば、’Completed’という注文状態を持つすべての顧客を返すクエリは次のとおりです:
SELECT *
FROM customers
WHERE customer_id IN (
SELECT customer_id
FROM orders
WHERE order_status = 'Completed'
);
まとめ:
- 存在用於檢查子查詢是否返回結果,通常與外部查詢結合使用。
- INは、リストやサブクエリ内に値が存在するかどうかを確認するために使用され、特定の値を持つ行をフィルタリングする際に通常使用されます。