My table is:
Tree table:
+----+------+
| id | p_id |
+----+------+
| 1 | null |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 2 |
+----+------+
If I execute
SELECT id FROM Tree
WHERE id IN (SELECT p_id FROM Tree)
I get the expected answer
+----+
| id |
+----+
| 1 |
| 2 |
+----+
However, if I execute
SELECT id FROM Tree
WHERE id NOT IN (SELECT p_id FROM Tree)
I get an empty result:
+----+
| id |
+----+
+----+
instead of the expected 3, 4, 5. As far as I understand, NOT IN
should give the complementary set given by IN
(excluding NULL
s)?
New to SQL, sorry if I'm missing something basic.