#mysql #sql #conditional
#mysql #sql #условные операторы
Вопрос:
Я создаю запрос по этой таблице
my_table
field1 | field2
1 | y
2 | y
3 | y
4 | n
1 | n
2 | n
3 | y
4 | y
Я ищу правило (возможно, IF) для выбора всех записей, исключая те, где field1 = 1 И field2 = y
эта запись не будет выбрана:
field1 | field2
1 | y
пока это нормально
field1 | field2
1 | N
Редактировать:
Я добавляю эту информацию: запрос длиннее:
ВЫБЕРИТЕ * Из my_table, ГДЕ time>’time1′ И time<‘time2′ И admin_area=’0’
в этом запросе я должен добавить фильтр: если field2=Y исключить записи, где field1 = 1
Ответ №1:
Как насчет:
SELECT * FROM my_table WHERE field1 <> 1 OR field2 <> 'y'
Комментарии:
1. что делать, если у меня есть длинный where и правила раньше?
2. я знаю, что операция не работает, но можете ли вы показать мне запрос для этого случая?
3. Вы могли бы обернуть эту часть в длинное предложение WHERE, например: ГДЕ бла-бла-бла И (field1 <> 1 ИЛИ field2 <> ‘y’) И бла-бла-бла…
Ответ №2:
Относительно:
в этом запросе я должен добавить фильтр: если field2=Y исключить записи, где field1 = 1
SELECT *
FROM my_table
WHERE time > 'time1'
AND time < 'time2'
AND admin_area = 0
AND ( (
field2 = 'Y' AND field1 <> 1
) OR (
field2 IS NULL OR field2 <> 'Y'
) )
Ответ №3:
Вот ссылка на синтаксис MySQL SELECT.Вы также можете использовать != или <> для проверки неравенства.
Комментарии:
1.
SELECT * FROM my_table WHERE (field1, field2) <> (1, 'y');