Mysql 为什么在LAG()函数中会出现语法错误?

Mysql 为什么在LAG()函数中会出现语法错误?,mysql,Mysql,我做了很多研究,但找不到为什么这不起作用,你能帮忙吗 我有一个数据库,其中有一个名为“tl_content”的表,其中的列名为“id”、“url”和“title”。我试图为每一行获取上一行的url 似乎我应该得到这个函数滞后 以下是我尝试的代码: SELECT url, title, LAG(url) OVER (ORDER BY id) FROM tl_content 但是我得到以下错误消息:您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以了解第3行“ORDER BY id

我做了很多研究,但找不到为什么这不起作用,你能帮忙吗

我有一个数据库,其中有一个名为“tl_content”的表,其中的列名为“id”、“url”和“title”。我试图为每一行获取上一行的url

似乎我应该得到这个函数滞后

以下是我尝试的代码:

SELECT url, title, 
LAG(url) OVER (ORDER BY id)
FROM tl_content
但是我得到以下错误消息:您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以了解第3行“ORDER BY id FROM tl_content”附近使用的正确语法

我看不出有什么不对

提前感谢你的帮助


Stéphanie.

我猜您的MySQL版本不支持LAG,可能是因为它是早于8+的版本。您可以使用相关子查询执行与LAG相同的操作:


假设id列是唯一的,即不存在任何重复的id值,这种方法应该可以很好地工作。如果你长期需要分析函数如滞后,那么考虑升级到MySQL 8 + ./P>我认为你的语法不正确。事实上,艾恩伯。我不知道为什么MySQL文档会建议使用这种语法,但是OP的语法遵循ANSI标准的分析函数。一定是这样,我有5.7版本。我将负责升级。谢谢!
SELECT
    url,
    title,
    (SELECT url FROM tl_content t2 WHERE t2.id < t1.id
     ORDER BY t2.id DESC LIMIT 1) url_lag
FROM tl_content t1;