INTERSECT と INNER JOIN の間には根本的な違いがありますか? [重複] 質問する

INTERSECT と INNER JOIN の間には根本的な違いがありますか? [重複] 質問する

INNER JOIN は参照キー用に作成され、INTERSECT はそうではないことは理解しています。しかし、私の知る限り、場合によっては、どちらも同じことを行うことができます。それでは、次の 2 つの式には (パフォーマンスなどにおいて) 違いがあるのでしょうか。あるとすれば、どちらが優れているのでしょうか。

表現1:

SELECT id FROM customers 
INNER JOIN orders ON customers.id = orders.customerID;

表現2:

SELECT id FROM customers
INTERSECT
SELECT customerID FROM orders

ベストアンサー1

あなたの場合でも、それらは非常に異なります。

がどちらかのテーブルで重複している場合、はINNER JOIN重複を返します。 は重複を削除します。 はを返すことはありませんが、を返します。idINTERSECTINNER JOINNULLINTERSECTNULL

これら 2 つは非常に異なります。INNER JOINは、通常、限られた列セットに一致し、いずれかのテーブルから 0 行以上の行を返すことができる演算子です。 は、INTERSECT2 つのセット間で完全な行を比較するセットベースの演算子であり、小さい方のテーブルよりも多くの行を返すことはできません。

おすすめ記事