MySQL语句中使用多个条件的If语句

26

我想在MySQL存储过程中以以下方式编写IF语句:

IF (exp1 and exp2 and exp3) or exp4

我知道MySQL会把IF()当作函数调用来处理。 但我希望你能理解我想要达到的目的。 我对MySQL语法还不熟悉。


它是在SELECT语句中还是在存储过程中? - Jorge Campos
@JorgeCampos 这是在一个过程中。 - avinash chavan
这个回答解决了你的问题吗?MySQL - 在MySQL UPDATE或SELECT查询中使用If Then Else - Channa
2个回答

38

在一个过程中,使用 IF 的方法非常简单:

IF (yourCondition [logical operator(OR, AND) another condition] ) THEN

所以,举个实际的例子:

....
DECLARE m integer;
DECLARE n integer;
SET m = 1;
SET n = 0;
IF ((m>n AND m=1 AND n=0) OR m=n)THEN
     some code here
END IF;

评估条件遵循与数学运算中相同的括号规则。

你可以参考文档


2

另一种有效的方法:

如果验证为真,则执行do this
如果验证为假,则执行do that

请注意,逗号,是mysql中的分隔符。

if((`something` = 'on' AND `other` = 'on' ),'do this', 'do that') AS `do_something_things`, 

不适用于该顺序,例如从项中选择 * 按 IF(@orientation=0, 'position / 1000, position % 1000', position) 排序。 - Bart Mensfort

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接