mysql выберите , если и

#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');