Ошибка при создании функции 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 ответ

Определите локальную переменную, чтобы прочитать время окончания и вернуть ее.

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;

licensed under cc by-sa 3.0 with attribution.