帮助MySQL过程嵌套的IF ELSE语句

时间:2011-09-15 03:41:45

标签: mysql stored-procedures if-statement

您好我需要帮助MySQL中的嵌套if else语句。 请验证以下代码是否相同? C代码是我想在MySQL中完成的。我没有语法错误。但似乎我没有得到正确的结果。

MySQL存储过程

IF top10_rank <= 10 AND top100_rank <=10 THEN SET temp_rank = 10;
ELSE SET temp_rank = 100;
END IF;


IF temp_rank = 10 THEN
  IF top10_rank_date > top100_rank_date THEN SET rank = top10_rank;
  ELSE SET rank = top100_rank;
  END IF;
ELSEIF temp_rank = 100 THEN SET rank = top100_rank;
ELSE SET rank = 0;
END IF;

C代码

if(top10_rank <= 10 && top100_rank <=10)
{
    temp_rank = 10;
}
else
{
    temp_rank = 100;
}

if(temp_rank == 10)
{
    if(top10_rank_date > top100_rank_date)
    {
        rank = top10_rank
    }
    else
    {
        rank = top100_rank
    }
}
else if(temp_rank == 100)
{
    rank = top100_rank;
}
else
{
    rank = 0;
}

1 个答案:

答案 0 :(得分:1)

似乎这些部分是等价的,不考虑整数(?可能是浮点数)字段的大小和SQL中NULL值的处理。 代码看起来不太好:

1)此代码无法访问:

else
{
    rank = 0;
}

2)可以缩短 - temp_rank可以内联

3)可能你需要使用这个函数是SELECT,它可以用CASE运算符重写 - 使调用更有效

4)要检测问题,请将C和SQL片段包装在函数中,并指定哪些输入参数结果不同。

相关问题