Ошибка #1241 Операнд должен содержать 1 столбец (столбцы) в Mysqlworkbench

Я просто попробую следующий запрос:

CREATE DEFINER=`root`@`localhost` FUNCTION `cal1`(z DATE , y DATE) RETURNS float
BEGIN
SET @c= (SELECT a.StudentName, (b.marks/a.marks) as difference from (select Date, StudentName, marks from studenthistory2015 WHERE Date=z) as a INNER JOIN (select Date, StudentName, marks from studenthistory2015 where Date=y) as b on a.date=z and b.date=y WHERE a.date = z and b.date = y and a.StudentName=b.StudentName
);
RETURN @c;
END

Исполнение:

выберите student_history.cal1('2015-01-01', '2015-02-01'); Но после выполнения он показывает ошибку № 1241 Операнд должен содержать 1 столбец

Как мне решить этот запрос?

1 ответ

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

SELECT a.StudentName, (b.marks/a.marks) as difference

вместо того, чтобы возвращать одну переменную, хотя вы фактически объявили в своей функции, что вы вернете float: RETURNS float

Возможно, вы можете преобразовать свою функцию в процедуру, как указано в этом подробном ответе здесь, отвечая на другой вопрос, связанный с вашим.

Другие вопросы по тегам