在同一SQL语句中使用IF和SET

时间:2019-02-12 21:39:50

标签: mysql sql

我需要在SQL存储过程中混合使用IF和SET语句。 我已经声明了变量p1,so,ct,ac,yoyo1,yoyo2等)。我想获得以下结果:

  • 如果so=0,则p1=yoyo1so等于1
  • 否则,如果ct=0,则p1=yoyo2ct等于1
  • 否则,如果ac=0,则p1=yoyo3ac等于1

我尝试了以下SQL代码,但返回了0

SET p1=IF(so=0, yoyo1 AND SET so=1, 
  IF(ct=0, yoyo2 AND SET ct=1, 
     IF(ac=0 , yoyo3 AND SET ac=1,'image01.jpg'))); 

2 个答案:

答案 0 :(得分:1)

如果代码是存储过程的一部分,则可以按以下方式使用 MySQL IF syntax

IF so=0 THEN 
    SET p1 = 'yoyo1';
    SET so = 1;
ELSEIF ct = 0 THEN
    SET p1 = 'yoyo2';
    SET ct = 1;
ELSEIF ac = 0 THEN
    SET p1 = 'yoyo3';
    SET ac = 1;
ELSE
    SET p1 = 'image01.jpg';
END IF;

如文档中所述,当心不要将 IF语句(三元运算符)与 IF()函数混合使用,控制流功能。

答案 1 :(得分:0)

    IF so=0 THEN
        SET p1='yoyo';
        SET so=1;
    ELSE
        IF ct=0 THEN
            SET p1='yoyo2';
            SET ct=1;
        ELSE
            IF ac=0 THEN
                SET p1='yoyo3';
                SET ac=1;
            ELSE
                SET p1='image01.jpg';
            END IF;
        END IF;
    END IF;

或使用CASE statement(我更喜欢这个):

    CASE
        WHEN so=0 THEN
            BEGIN
                SET p1='yoyo';
                SET so=1;
            END;
        WHEN ct=0 THEN
            BEGIN
                SET p1='yoyo2';
                SET ct=1;
            END;
        WHEN ac=0 THEN
            BEGIN
                SET p1='yoyo3';
                SET ac=1;
            END;
        ELSE
            BEGIN
                SET p1='image01.jpg';
            END;
    END CASE;