SUM函数在MYSQL存储过程中不起作用?

时间:2015-08-28 11:24:06

标签: php mysql stored-procedures

每当运行存储过程时,它返回相同的输出106。 它是number1列的所有数据的总和。 在我的示例代码下面。 我希望它会对你有所帮助。 如果我有任何错误,请纠正我。

商店程序:

DELIMITER $$
CREATE PROCEDURE raw_data(IN user_id INT(10),IN p_id INT(10))
BEGIN
    SELECT SUM(number1) AS result FROM raw_data WHERE user_id=user_id AND p_id=p_id; 
END $$
DELIMITER ;

表格格式:

       id name    number1     number2       user_id    p_id
        1   a       10          20              1       49
        2   b       12          12              1       49
        3   c       20          30              2       48
        4   d       22          22              2       48
        5   c       20          30              2       48
        6   d       22          22              2       49

输入:

CALL raw_data(1, 49);   

输出

result
106

注意:如果给出任何输入,则输出(106)相同。 抱歉我的英语不好。

1 个答案:

答案 0 :(得分:3)

您的参数与列名混淆。总是先用它们来区分它们:

Tabs

DELIMITER $$ CREATE PROCEDURE raw_data(IN in_user_id INT(10), IN in_p_id INT(10)) BEGIN SELECT SUM(rd.number1) AS result FROM raw_data rd WHERE rd.user_id = in_user_id AND rd.p_id = in_p_id; END $$ DELIMITER ; 语句中,表格中的列(where)将与表格中的列进行比较(user_id。最佳解决方案是命名参数存储过程,因此它们不匹配表中的列。