MySQL和THEN中MySQL的正确语法是什么?

时间:2013-12-28 23:16:49

标签: mysql if-statement

为什么我的IF声明不正确? - 我检查过http://dev.mysql.com/doc/refman/5.1/en/if.html,但我的MySQL-Statement返回错误:#1064 - 您的SQL语法出错;

SET @MYVAR := '9';

IF ( @MYVAR  > '0' ) THEN
   SELECT * FROM `Table` LIMIT 1;
END IF

正确的语法是什么?

3 个答案:

答案 0 :(得分:0)

这是MYSQL中IF和THEN的一个例子:

CREATE FUNCTION SimpleCompare(n INT, m INT)
RETURNS VARCHAR(20)

BEGIN
DECLARE s VARCHAR(20);

IF n > m THEN SET s = '>';
ELSEIF n = m THEN SET s = '=';
ELSE SET s = '<';
END IF;

SET s = CONCAT(n, ' ', s, ' ', m);

RETURN s;
END 

错误:#1064可能正在显示,因为您可能使用内置的MYSQL关键字作为列名或“;”在查询中可能会丢失。

答案 1 :(得分:0)

12.4. Control Flow Functions - IF()

SET @`MYVAR` := 9;
SET @`stmt` := IF(@`MYVAR` > 0, 'SELECT * FROM `Table` LIMIT 1', 'DO (SELECT NULL)');
PREPARE `exec`  FROM @`stmt`;
EXECUTE `exec`;
DEALLOCATE PREPARE `exec`;

13.6.5.2. IF Syntax

/* Procedure structure for procedure `test` */

/*!50003 DROP PROCEDURE IF EXISTS  `test` */;

DELIMITER $$

DROP PROCEDURE IF EXISTS `test`$$

CREATE PROCEDURE `test`()
BEGIN
    SET @`MYVAR` := 9;
    IF (@`MYVAR` > 0) THEN
        SELECT * FROM `Table` LIMIT 1;
    END IF;
END$$

DELIMITER ;

答案 2 :(得分:0)

IF - 语法对我来说似乎很复杂。

我用SELECT CASE解决了这个问题。