创建MYSQL函数以解决时间差异时出错

时间:2014-04-30 18:57:07

标签: mysql

我正在创建一个函数,作为数据库项目的一部分,在大学里有一个小组。我希望函数返回比赛完成的最快时间并尝试以下代码。我收到一个错误,因为我认为它试图返回多个值,但不能想到另一种方法来做到这一点。任何帮助表示赞赏。

DELIMITER //
CREATE OR REPLACE FUNCTION calc_race_winner(in_race_id INT)
RETURNS FLOAT(10)
BEGIN
CREATE TEMPORARY TABLE IF NOT EXISTS temp_result AS (
SELECT 
    (TIME_TO_SEC(TIMEDIFF(ps_result.finish_time, ps_race.start_time)) / 60) AS finish_time_mins
    FROM ps_race
    INNER JOIN ps_result ON ps_race.race_id = ps_result.race_id
    );
SELECT *
    FROM temp_result
    WHERE ps_race.race_id = in_race_id
    ORDER BY finish_time_mins ASC LIMIT 1;
RETURN finish_time_mins;
END//
DELIMITER ;

1 个答案:

答案 0 :(得分:1)

定义一个局部变量以读取完成时间并返回相同的内容。

begin
  declare finish_time_calculated_in_mins int default 0;

  create temp.....

  ....

  select finish_time_mins 
    into finish_time_calculated_in_mins 
    from temp_result
   where ps_race.race_id = in_race_id
   order by finish_time_mins asc 
   limit 1;

  return finish_time_calculated_in_mins;
end;