Mysql存储过程和错误代码:1111。组函数的使用无效

时间:2014-11-13 20:51:28

标签: mysql stored-procedures

使用Mysql存储过程进行第一步。我有以下声明,但是当我运行它时,我收到错误:Error Code: 1111. Invalid use of group function但我没有使用GROUP BY或聚合在任何地方,是吗?

delimiter //
DROP PROCEDURE IF EXISTS myDB.FiscalYearCleanup//
CREATE PROCEDURE myDB.FiscalYearCleanup 
    (IN year INT)
BEGIN 
    --
    -- Fiscal Years "end" in the named year
    -- So, FY2000 starts on July 1, 1999 and ends on June 30, 2000
    --
    -- Only use years that exist in the current pool of events
    --
    DECLARE testYear INT DEFAULT 0;
    SELECT 
        year
    FROM
        myDB.eventLog
    WHERE
        year BETWEEN YEAR(MIN(date)) AND YEAR(MAX(date)) 
    INTO testYear;

    IF testYear = year THEN
        SELECT CONCAT('Year is in range: ', year) AS message;
    ELSE 
        SELECT CONCAT('Year is out of range: ', year) AS message;
    END IF;
END//

1 个答案:

答案 0 :(得分:1)

您确实在使用聚合:MIN中的MAXyear BETWEEN YEAR(MIN(date)) AND YEAR(MAX(date))

对存储过程的修复非常简单:将查询中的WHERE更改为HAVING

在聚合发生之前应用WHERE子句中的条件。聚合后应用HAVING子句中的条件。