我需要在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的正确语法。
感谢您的帮助!
答案 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