1. ホーム
  2. sql

[解決済み】INTERSECTとINNER JOINは根本的に違うのか?[重複している]

2022-02-22 07:25:06

質問

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

解決方法は?

あなたのケースでも、ずいぶん違いますね。

INNER JOIN は重複を返します。 id がどちらかのテーブルで重複している場合。 INTERSECT は重複を削除します。 その INNER JOIN が返されることはありません。 NULL しかし INTERSECT が返されます。 NULL .

この 2 つは非常に異なっています。1 つは一般に限られた列のセットでマッチングを行う演算子で、0 行またはそれ以上の行をどちらのテーブルでも返すことができます。 もう一方は集合ベースの演算子で、2つの集合の間の完全な行を比較し、小さい方のテーブルの行数より多い行を返すことはあり得ません。