WITH t AS ( SELECT 'aaa' a, 'apple' b, 'good' c UNION ALL SELECT 'aaa', 'banana', 'bad' UNION ALL SELECT 'aaa', 'banana', 'good' UNION ALL SELECT 'aaa', 'banana', 'normal' UNION ALL SELECT 'aaa', 'apple' , 'bad' ) SELECT * FROM t WHERE ( b != 'banana' OR c = 'good' ) -- WHERE NOT ( b = 'banana' AND c != 'good' ) ;