NOT NULL сам по себе выводится корректно. Добавление NOT NULL, И и ИЛИ выводит нули

#sql

#sql

Вопрос:

Как можно объединить NOT NULL с AND и OR ?

Вывод этого запроса правильный. Он выводит значения, отличные от нулей, из столбца rate_spread :

 SELECT action_taken, action_taken_name, applicant_ethnicity, 
       applicant_ethnicity_name, applicant_income_000s, county_name, 
       loan_amount_000s, rate_spread
FROM usa_cfpb_hmda.2007

WHERE rate_spread is NOT NULL
LIMIT 10
  

введите описание изображения здесь

Однако, когда добавляется ограничение, Not Null больше не работает. Однако OR это работает. Как в этом примере:

 SELECT action_taken, action_taken_name, 
       applicant_ethnicity, applicant_ethnicity_name, 
       applicant_income_000s, county_name, loan_amount_000s, 
       rate_spread
FROM usa_cfpb_hmda.2007

where rate_spread is NOT NULL
     and action_taken = 1
     OR action_taken = 6
  

ограничение 10

введите описание изображения здесь

Комментарии:

1. Это не имеет ничего общего с NOT NULL инструкцией, это потому, что вы смешали AND и OR. Вы должны заключить в скобки условия, которые вы хотите связать вместе, чтобы указать, что вы имеете в виду, так же, как и в любом языке.

Ответ №1:

Вы должны расставить приоритеты в своей логике (т. Е. Использовать круглые скобки) :

 where rate_spread is not null and 
     (action_taken = 1 or action_taken = 6);
  

Комментарии:

1. Заставляет меня удалять мой идентичный ответ, набирая быстрее меня = 1.

Ответ №2:

Я считаю, что вам нужно сгруппировать ваши условия с помощью круглых скобок

 SELECT action_taken, action_taken_name, 
       applicant_ethnicity, applicant_ethnicity_name, 
       applicant_income_000s, county_name, loan_amount_000s, 
       rate_spread
FROM usa_cfpb_hmda.2007

where rate_spread is NOT NULL
     and (action_taken = 1
     OR action_taken = 6)
  

таким образом, SQL интерпретирует условие как: либо в action_taken = 1, либо в action_taken = 6, а также значение rate_spread не равно null.