Помощь с процедурой MySQL, вложенной, если есть ELSE - PullRequest
3 голосов
/ 15 сентября 2011

Привет, мне нужна помощь с вложенными инструкциями if else в MySQL. Пожалуйста, проверьте, совпадает ли код ниже ? Код на C - это то, чего я хочу достичь в MySQL. У меня нет синтаксических ошибок. Но, похоже, я не получаю правильный результат.

MySQL Stored Proc

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 Ответ

1 голос
/ 15 сентября 2011

Кажется, что части эквивалентны без учета таких вещей, как размер целочисленных (может быть плавающих) полей и обработка значений NULL в SQL.Код выглядит не очень хорошо:

1) Этот код недоступен:

else
{
    rank = 0;
}

2) Возможно его сокращение - может быть встроен temp_rank

3) Возможно, вам нужно использоватьэта функция SELECT, ее можно переписать с помощью оператора CASE - чтобы сделать вызовы более эффективными

4) Чтобы обнаружить проблему, оберните кусочки C и SQL в функции и укажите, для каких входных параметров различаются результаты.

...