嗨,我已经编写了此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 ;;脚本的顶部添加了,因为在设置变量时一直收到语法错误,这似乎可以解决该问题。老实说,我不知道为什么,但是这似乎现在可行。
由于该错误,我没有任何结果,对此感到抱歉。感谢您的提前帮助,我们非常感谢