#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.