【发布时间】:2022-01-06 18:43:21
【问题描述】:
我在下面有 SQL 代码。如果我从最后一个 SQL 语句中删除 , LAG(myNum, 1) OVER(ORDER BY id),我的代码就可以工作。如果我在最后一个 SQL 语句中继续使用LAG() 和OVER(),则会收到Error Code: 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 '(ORDER BY id) from db001.myTable001' at line 1 的错误。任何想法如何解决?谢谢!
DROP TABLE IF EXISTS db001.myTable001;
CREATE TABLE IF NOT EXISTS db001.myTable001
(id int, myDate VARCHAR(3), myNum int);
INSERT INTO db001.myTable001
(id, myDate, myNum)
VALUES
(1, 'Mon', 4),
(2, 'Tue', 6),
(3, 'Wed', 3);
SELECT * from db001.myTable001;
SELECT id, myDate, myNum as curNum, LAG(myNum, 1) OVER(ORDER BY id)
from db001.myTable001;
【问题讨论】:
-
您使用的是什么版本的 MySQL?您需要运行 MySQL 8.0 或更高版本才能使用像
LAG和LEAD这样的窗口函数。 (有太多的商店仍在运行 MySQL 5.x...我敢打赌他们也在运行 PHP 4...) -
谢谢。我正在使用 MySQL57,现在我明白为什么了。
标签: mysql sql database window-functions lag