NOT IN flips TRUE and FALSE while UNKNOWN remains UNKNOWN.
highlighted = computed this step
NOT IN inverts truth
NOT IN flips TRUE to FALSE and FALSE to TRUE. UNKNOWN stays UNKNOWN.
invert TRUE and FALSE
Read NOT IN output
After inversion, 1 row is TRUE.
NOT IN TRUE rows=1
IN-list examples are tiny finite WHERE-style filters with SQL-style TRUE/FALSE/UNKNOWN behavior; subqueries, type coercion, optimizer behavior, indexes, dialect details, and product claims are out of scope.
UNKNOWN remains
The NULL row is still UNKNOWN after NOT IN, so it is not kept.
UNKNOWN unchanged
Summary
NOT IN is truth inversion, not a separate matching rule.