我需要在SQL存储过程中混合使用IF和SET语句。 我已经声明了变量p1,so,ct,ac,yoyo1,yoyo2等)。我想获得以下结果:
so=0
,则p1=yoyo1
和so
等于1
ct=0
,则p1=yoyo2
和ct
等于1
ac=0
,则p1=yoyo3
和ac
等于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')));
答案 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;