Mysql 存储函数计算不正确的值

Mysql 存储函数计算不正确的值,mysql,function,Mysql,Function,我有一个函数,它应该只返回一个元素的值,但这是从每个表返回的 Function verify(idAluno INT) returns INT BEGIN DECLARE teste INT; SELECT COUNT(status) into teste FROM listapresenca WHERE idAluno = idaluno; RETURN teste; END listapresenca中的值为 idAluno status horario 1

我有一个函数,它应该只返回一个元素的值,但这是从每个表返回的
Function verify(idAluno INT) returns INT
BEGIN
    DECLARE teste INT;
    SELECT COUNT(status) into teste FROM listapresenca WHERE idAluno = idaluno;
    RETURN teste;
END
listapresenca中的值为

idAluno status  horario
1       ENTROU  2018-09-02 21:46:25
0       NAO     2018-09-02 21:46:43
0       NAO     2018-09-02 21:46:45
0       NAO     2018-09-02 21:46:46
0       NAO     2018-09-02 21:46:48
0       NAO     2018-09-02 21:59:10
放置变量idaluno=1的结果应该是1,但返回6


如果我在函数
之外使用,则从listapresenca中选择COUNT(status),其中idAluno=1
,返回值为1

,问题在于表中的列名
idAluno
与函数中的参数名
idAluno
之间存在冲突,因此,您的
WHERE
子句有效地比较了相同的值,并将返回表中的所有数据(因此您的结果为6)。尝试将参数名称更改为,例如
searchId

CREATE FUNCTION verify(SearchId INT) returns INT
BEGIN
    DECLARE teste INT;
    SELECT COUNT(status) into teste FROM listapresenca WHERE idAluno = SearchId;
    RETURN teste;
END
然后,您可以使用以下工具进行测试:

SELECT verify(1), verify(0)
输出(用于您的数据)


演示

这不起作用,当我输入要查找的id值时,它仍然返回6@GuilhermeSeibertZulian我不知道为什么会这样,你可以从演示链接上看到它确实有效。你是不是先删除了旧函数?太好了。很高兴我能帮忙。
verify(1)   verify(0)   
1           5