如何在MYSQL中编写嵌套的if-else-if

如何在MYSQL中编写嵌套的if-else-if,mysql,if-statement,nested-if,Mysql,If Statement,Nested If,以下步骤必须正确。在mysql上运行时出现错误 错误代码:1064。您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第27行“”附近使用的正确语法 我认为您可能应该使用语句来执行此过程如下更新存储函数 DELIMITER $$ DROP FUNCTION IF EXISTS `check2_login`$$ CREATE FUNCTION `check2_login`(p_username VARCHAR(30),p_password VARCHAR(30),role VAR

以下步骤必须正确。在mysql上运行时出现错误

错误代码:1064。您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第27行“”附近使用的正确语法


我认为您可能应该使用语句来执行此过程

如下更新存储函数

DELIMITER $$
DROP FUNCTION IF EXISTS `check2_login`$$
CREATE  FUNCTION `check2_login`(p_username VARCHAR(30),p_password VARCHAR(30),role VARCHAR(20)) RETURNS BOOL
    BEGIN
    DECLARE retval INT;
            IF role = "customer" THEN
                SELECT COUNT(custid) INTO retval FROM customer WHERE custid = p_username and pwd = p_password;
                IF retval != 0 THEN
                    RETURN TRUE;    
                ELSE
                    RETURN FALSE;                           
                END IF;
            ELSEIF role = "executive" THEN
                SELECT COUNT(execid) INTO retval FROM executive WHERE execid = p_username and pwd = p_password;
                IF retval != 0 THEN
                    RETURN TRUE;    
                ELSE
                    RETURN FALSE;                           
                END IF;
            ELSEIF role = "admin" THEN
                SELECT COUNT(empid) INTO retval FROM employee WHERE empid = p_username and pwd = p_password;
                IF retval != 0 THEN
                    RETURN TRUE;    
                ELSE
                    RETURN FALSE;                           
                END IF;
            ELSE
                RETURN FALSE;       
            END IF;
    END$$
DELIMITER ;

希望这将帮助你…!

打赌你希望你有一个登录表…如何在mysql函数中连接两个表。这里还有指定表。根据你的新要求发布新问题。如果你更新了相同的问题,那么用户将看不到它。因此,为此发布新问题…如果你提供了,我将对你的答案进行投票解释原始代码的问题所在,以及解决方案解决问题的原因/方式
SELECT *, 
   IF(discount='0',
      ( IF(tax='0', discount_price, discount_price + (discount_price * (tax_rate/100))) ),
      ( IF(tax='0', price, price + (price * (tax_rate/100))) )
   ) AS price_last
FROM products WHERE id=1
SELECT *, 
   IF(discount='0',
      ( IF(tax='0', discount_price, discount_price + (discount_price * (tax_rate/100))) ),
      ( IF(tax='0', price, price + (price * (tax_rate/100))) )
   ) AS price_last
FROM products WHERE id=1