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

MySQL过程嵌套IF-ELSE语句的帮助,mysql,stored-procedures,if-statement,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

嗨,我需要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;

如果top10_rank,那么这些片段似乎是等价的,而不考虑整数(?可能是浮点)字段的大小和SQL中空值的处理。
代码看起来不好:

1) 无法访问此代码:

else
{
    rank = 0;
}
2) 它可以被缩短-临时排名可以内联

3) 也许你需要使用这个函数是SELECT,它可以用CASE操作符重写-使调用更有效


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

会出现什么差异?当您在C代码和MySQL代码中输入相同的内容时,输出何时不同?我不知道确切的情况,我只是不知道如何调试存储过程代码。但我并没有得到我期望在存储过程中发生的事情,所以我猜是这一部分。但是如果上面的代码是相同的,那么我看的代码是错误的。你到底为什么要在存储过程中编写这样的过程代码??在它所属的地方用C写。
else
{
    rank = 0;
}