我进行了相当多的研究,无法找到为什么这行不通,请您帮忙?
我有一个数据库,该数据库具有名为“ tl_content”的表,其中具有名为“ id”,“ url”和“ title”的列。我试图为每一行获取上一行的网址。
似乎我应该使用函数LAG()来获得它。
这是我尝试的代码:
SELECT url, title,
LAG(url) OVER (ORDER BY id)
FROM tl_content
但是我收到以下错误消息:“您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以在第3行的'(ORDER BY id)FROM tl_content'附近使用正确的语法。 “。
我看不出怎么回事。
预先感谢您的帮助。
史蒂芬妮。
答案 0 :(得分:0)
我的猜测是您的MySQL版本不支持LAG
,可能是因为它的版本早于8+。您可能可以使用相关子查询来完成与LAG
相同的操作:
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;
假设id
列是唯一的(即,永远不会有重复的id
值),此方法应该可以正常工作。如果您长期需要诸如LAG
之类的分析功能,请考虑升级到MySQL 8 +。