phpMyAdmin告诉我,以下代码片段在语法上是不正确的:
SET @time := NOW();
SET @timeset :=0;
IF @timeset=1
THEN SET @time := DATE_ADD(@time,INTERVAL 10 SECOND);
ELSE SET @time := DATE_SUB(NOW(),INTERVAL 1 DAY);
SET @timeset := 1;
END IF;
但我没看到它有什么问题。
确切的错误消息为:
更新:感谢wolfgangalther的回答,我找到了以下解决方法:
SET @time := NOW();
SET @timeset :=0;
SET @time=IF(@timeset=1,DATE_ADD(@time,INTERVAL 10 SECOND),DATE_SUB(NOW(),INTERVAL 1 DAY));
SET @timeset:=1;
答案 0 :(得分:3)
来自MySQL manual:
MySQL支持IF,CASE,ITERATE,LEAVE LOOP,WHILE和REPEAT结构,用于存储程序中的流控制 。
您不得自行发布IF
构造!
这里也有一个简短的讨论(包括一些替代方案): https://dba.stackexchange.com/questions/80132/using-if-statement-outside-of-a-stored-procedure-or-function
注意:在那个地方has been requested as a feature in the past使用IF语句,但截至目前尚未在MySQL中实现。
修改强>
存储的程序是存储过程或存储的函数。存储函数与存储过程相同,它们只返回一个值。
阅读有关存储过程的更多信息:
答案 1 :(得分:0)
这种IF ELSE
只能在存储过程中使用,但您可以在查询中使用If条件,如下所示。
IF(expr,if_true_expr,if_false_expr)
实施例
SELECT customerNumber,
customerName,
IF(state IS NULL,'N/A',state) state,
country
FROM customers;