MySQL - помогите с использованием IF ... ELSE в запросе - PullRequest
0 голосов
/ 15 мая 2011

Мне нужно добавить условие if / else внутри запроса MySQL, но я не могу заставить его работать.

Ниже приведен пример с псевдокодом, который я хочу выполнить.

SELECT *
FROM calendar
WHERE calendar.alert = 1

IF calendar.repeat = 0 THEN HAVING calendar.UTC_1 > UNIX_TIMESTAMP();

ELSE "get all records regardless of calendar.repeat value";

END IF;

Есть предложения, чтобы это произошло?Я не смог найти правильный синтаксис для этого MySQL IF ELSE.

Спасибо за помощь!

Ответы [ 2 ]

1 голос
/ 15 мая 2011

Не уверен, что я получил синтаксис прямо здесь, но мне нравится идея такого рода как эта. На мой взгляд, в будущем гораздо проще взглянуть на две группы, которые вы захватите, на следующем примере. Я не осведомлен об эффективности дела против объединения в MySQL, но мне кажется, что дело также будет менее эффективным. Может быть, кто-то может ответить на это наверняка?

SELECT *
FROM calendar
WHERE 
    calendar.alert = 1
    AND calendar.repeat = 0
    AND calendar.UTC_1 > UNIX_TIMTESTAMP();
UNION
SELECT *
FROM calendar
WHERE
    calendar.alert = 1
    AND calendar.repeat != 0
1 голос
/ 15 мая 2011
SELECT *
FROM calendar
WHERE calendar.alert = 1 
AND CASE 
WHEN `repeat` =0 THEN UTC_1 > UNIX_TIMESTAMP()
ELSE 1=1 END;

Вы можете использовать IF-ELSE только внутри тела хранимой процедуры / триггера.Вы можете использовать IF(condition, value_if_condition_is_true, value_if_condition_is_false) в SELECT, но я предпочитаю CASE (вы можете легко переписать приведенный выше запрос в

 .... AND IF(`repeat` = 0, UTC_1>UNIX_TIMESTAMP(),1=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...