MySQL запрос для выбора на основе расходящихся условий - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть таблица со следующими столбцами

id status created_at
1   close  ..
2   close  ..
3   open   ..

Теперь я пытаюсь получить все записи, которые не старше 3 месяцев, как это

select * from table where created_at >= NOW() - interval 3 month 

Но я также хочузаписи, которые открыты и старше 3 месяцев, как добавить это условие в тот же sql?

Ответы [ 4 ]

0 голосов
/ 22 ноября 2018
Select * from Table where add_date(date_column, interval 3 month)> now() or status = "open";
0 голосов
/ 22 ноября 2018

Вы можете попробовать использовать ИЛИ

select * from table where created_at >= NOW() - interval 3 month 
or (status='open' and created_at < NOW() - interval 3 month)
0 голосов
/ 22 ноября 2018

используйте ИЛИ

select * from table where created_at >= NOW() - interval 3 month or status='open'
0 голосов
/ 22 ноября 2018

Просто добавьте это условие в ваше предложение where.Обратите внимание, что вам не нужно включать в условие часть «старше 3 месяцев», так как в любом случае первая часть предложения where подхватывает что-то более новое, чем 3 месяца, поэтому OR status = 'open' найдет только дополнительные записи.старше 3 месяцев.

select * 
from table
where columnX = 'some ID' AND
   (created_at >= NOW() - interval 3 month OR status = 'open')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...