MySQL - 帮助IF ...在查询中使用ELSE

时间:2011-05-14 22:16:22

标签: mysql sql conditional-statements

我需要在MySQL查询中添加一个if / else stament,但无法使其工作。

以下是我想要完成的伪代码示例。

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 个答案:

答案 0 :(得分:1)

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)

答案 1 :(得分:1)

我不确定我的语法是否正确,但我喜欢这样的想法。在我看来,将来看起来要容易得多,看看你正在抓住以下两个例子。我没有接受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