I have this query where the two operands of the MINUS
operators are computed twice.
How do rewrite the query so that they are only created once?
(The objective is to check that the two sets are equal)
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);
To clarify things, the following two [sub]queries are repeated twice in the query:
SELECT t2.did FROM t1 AS t2
WHERE t2.id = t1.id
and
SELECT t3.did FROM t3
WHERE t3.price > 500000