WITH mk_l(k, v) AS (
VALUES (1, 10), (2, 20), (3, 30), (4, 40), (CAST(NULL AS INTEGER), 50)
),
mk_r(k) AS (
VALUES (1), (2), (2), (CAST(NULL AS INTEGER))
)
SELECT l.k, l.v
FROM mk_l AS l
WHERE l.v > 35 OR l.k NOT IN (SELECT r.k FROM mk_r AS r)
ORDER BY l.k, l.v;
k | v
---+----
4 | 40
| 50
(2 rows)
+------+----+
| k | v |
+------+----+
| 3 | 30 |
| 4 | 40 |
| NULL | 50 |
+------+----+
Thanks @kumarUjjawal for catching this issue
PostgreSQL
DF
Originally posted by @comphead in #24805 (comment)