MySQL语法错误 变量=变量+整数

Luk*_*ner 0 mysql syntax

嗨,我已经编写了此MySQL存储过程,并且不断收到此语法错误

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@start := @start + 3600;

END WHILE;

@start = 1505469600;
' at line 42
Run Code Online (Sandbox Code Playgroud)

这是我的存储过程,由于语法错误,我还无法运行它,因此它可能有些问题。如果您发现任何问题,可以帮助我。

DELIMITER ;;

CREATE PROCEDURE insert_zone_time_range_data()

BEGIN

SET @start = 1505469600, @end = 1505483940;

WHILE @start < @end DO

    WHILE @start < @end DO

        INSERT INTO daily_stats_zone_visitors_time_range
        (
            day_epoch,
            day_of_week,
            time_range_hours,
            venue_id,
            visitors,
            visitors_new
        )
        SELECT UNIX_TIMESTAMP(FROM_UNIXTIME(ts,'%Y-%m-%d')) AS day_epoch,
        FROM_UNIXTIME(ts,'%W') AS day_of_week,
        FROM_UNIXTIME(@start, '%h') + '-' + FROM_UNIXTIME(@end, '%h') AS time_range_hours,
        venue_id,
        COUNT(DISTINCT mac) AS visitors,
        COUNT(id) AS visitors_new
        FROM (              
            SELECT probe_request.venue_id,
            probe_request.mac,
            macs.id,
            probe_request.ts
            FROM probe_request
            LEFT OUTER JOIN daily_stats_venue_mac_cache AS macs
            ON probe_request.mac = macs.mac
            AND probe_request.venue_id = macs.venue_id
            AND macs.first_seen BETWEEN @start AND @end
            WHERE probe_request.ts BETWEEN @start AND @end
            GROUP BY probe_request.venue_id, probe_request.mac
        ) AS temp
        GROUP BY venue_id;

        @start = @start + 3600;

    END WHILE;

    @start = 1505469600;
    @end = @end - 3600;

END WHILE;

END;
;;
Run Code Online (Sandbox Code Playgroud)

我在DELIMITER ;;脚本的顶部添加了,因为在设置变量时一直收到语法错误,这似乎可以解决该问题。老实说,我不知道为什么,但是这似乎现在可行。

由于该错误,我没有任何结果,对此感到抱歉。感谢您的提前帮助,我们非常感谢

小智 5

要将值设置为变量,必须使用Set关键字。

在这里

   set @start = @start + 3600
Run Code Online (Sandbox Code Playgroud)