MINUS
演算子の 2 つのオペランドが2 回計算されるこのクエリがあります。一度だけ作成されるようにクエリを書き直すにはどうすればよいですか?
(目的は、2 つのセットが等しいことを確認することです)
SELECT DISTINCT t1.id
FROM t1
WHERE NOT EXISTS (SELECT t2.did FROM t1 AS t2
WHERE t2.id = t1.id
MINUS
SELECT t3.did FROM t3
WHERE t3.price > 500000)
AND NOT EXISTS (SELECT t3.did FROM t3
WHERE t3.price > 500000
MINUS
SELECT t2.did FROM t1 AS t2
WHERE t2.id = t1.id);
明確にするために、次の 2 つの [サブ] クエリがクエリで 2 回繰り返されます。
SELECT t2.did FROM t1 AS t2
WHERE t2.id = t1.id
と
SELECT t3.did FROM t3
WHERE t3.price > 500000