我正在创建一个函数,它在另一个SELECT中有一个SELECT。当我尝试使用函数参数之一作为内部SELECT的一部分时,它什么也没有返回。
FUNCTION `nota_alumno`(`uid` VARCHAR(255), `total_p` INT) RETURNS float
BEGIN
RETURN (SELECT (SUM(n_pregunta)*10)/total_p AS nota
FROM
(SELECT nota_pregunta(scores.userid,question) as n_pregunta FROM `scores` WHERE scores.userid=uid GROUP BY question) as T);
END
当我只输入一个非基于参数的值时,它确实可以工作:
FUNCTION `nota_alumno`(`uid` VARCHAR(255), `total_p` INT) RETURNS float
BEGIN
RETURN (SELECT (SUM(n_pregunta)*10)/total_p AS nota
FROM
(SELECT nota_pregunta(scores.userid,question) as n_pregunta FROM `scores` WHERE scores.userid="ddj239dkdsd" GROUP BY question) as T);
END
下面是函数nota_pregunta的定义,以供参考:
FUNCTION `nota_pregunta`(`userid` VARCHAR(255), `q` INT) RETURNS float
BEGIN
RETURN (SELECT ROUND(1/COUNT(*),2) FROM `scores` WHERE userid=userid and question=q);
END
1条答案
按热度按时间f4t66c6m1#
子查询过多。开始_END也过多。
此外,函数
nota_pregunta
不正确(在WHERE userid=userid
中比较参数和参数,即检查所提供的userid
是否不为NULL),必须