为什么我的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
正确的语法是什么?
答案 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`;
/* 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解决了这个问题。