Reviewed by Aditya Kumar · Last reviewed 2026-03-24
EXCEPT: SELECT col FROM t1 EXCEPT SELECT col FROM t2 (A minus B). NOT IN: SELECT * FROM t1 WHERE col NOT IN (SELECT col FROM t2)—**NULL trap**: if t2 has NULL, NOT IN returns nothing. **Safe**: NOT EXISTS (SELECT 1 FROM t2 WHERE t2.col = t1.col). **EXCEPT** eliminates...
EXCEPT: SELECT col FROM t1 EXCEPT SELECT col FROM t2 (A minus B). NOT IN: SELECT * FROM t1 WHERE col NOT IN (SELECT col FROM t2)—NULL trap: if t2 has NULL, NOT IN returns nothing. Safe: NOT EXISTS (SELECT 1 FROM t2 WHERE t2.col = t1.col). EXCEPT eliminates duplicates; NOT EXISTS doesn't. Performance: NOT EXISTS often optimizes better than NOT IN.
Red Flag: NOT IN with nullable subquery—silent wrong results. Pro-Move: 'We migrated from NOT IN to NOT EXISTS after finding 0 rows when subquery had NULL—fixed a 2-year-old bug in reconciliation job.'
According to DataEngPrep.tech, this is one of the most frequently asked SQL interview questions, reported at 1 company. DataEngPrep.tech maintains an editor-reviewed database of 1,863 data engineering interview questions across 7 categories.