MySQL запрос.Можно ли добавить условие в условие WHERE? - PullRequest
0 голосов
/ 19 января 2012

В основном я делаю что-то вроде этого:

select a.name from schedule as a
where date(now()) <= a.dateTo;

Но a.dateTo может быть нулевым. Итак, я хотел бы запрос сделать что-то вроде этого:

select a.name from schedule as a
where date(now()) <= a.dateTo IF a.dateTo is not null;

Это просто упрощенный способ объяснить, чего я пытаюсь достичь.

Есть идеи?

UPDATE:

Следующий пример может дать лучшее представление о том, что требуется

select a.name from schedule as a
where date(now()) >= a.dateFrom and 
      date(now()) <= a.dateTo;

Если я добавлю OR a.dateTo is null, я думаю, он переопределит первое условие: date(now()) >= a.dateFrom, которое не является желаемым запросом. Нечто подобное произойдет с использованием AND.

Если a.dateTo равно нулю, это будет> дата (сейчас ()), поэтому эти записи следует извлечь, если также применяется первое условие: date(now()) >= a.dateFrom

Спасибо за вашу помощь

Ответы [ 5 ]

1 голос
/ 19 января 2012
select a.name from schedule as a where curdate() <= ifnull(a.dateTo,curdate());
0 голосов
/ 19 января 2012

Я не совсем уверен, что понял, как вы хотите, чтобы NULL значения вели себя, но, возможно, это подойдет вам:

SELECT a.name 
FROM schedule AS a
WHERE DATE(NOW()) >= a.dateFrom 
AND DATE(NOW()) <= COALESCE(a.dateTo, NOW());

Но это действительно то же самое, что сказать

SELECT a.name 
FROM schedule AS a
WHERE DATE(NOW()) >= a.dateFrom
AND (a.dateTo IS NULL OR DATE(NOW()) < a.dateTo)

Не уверен, что более эффективно.

0 голосов
/ 19 января 2012

Как насчет:

SELECT a.name FROM schedule AS a WHERE date(NOW()) <= a.dateTo AND a.dateTo IS NOT NULL

Я думаю, что это сработает.

0 голосов
/ 19 января 2012

Я не проверял это, но что-то вроде

SELECT a.name FROM schedule as a WHERE (a.dateTo IS NOT NULL AND date(now()) <= a.dateTo)

должно работать

0 голосов
/ 19 января 2012

Вы можете использовать and и or логические операторы:

where date(now()) <= a.dateTo
      OR a.dateTo is null
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...