在sqlite3中使用row_number时出现语法错误

nai*_*fei 3 sql sqlite

我想row_number基于如何从基于表的多个列获取唯一记录的 功能中 删除重复项。但是被语法错误阻止了。我的用例如下: 这是我的桌子,它命名为demo

和我的SQL如下:

select demo.*, 
      row_number() over (partition by id order by creator desc) as rn 
from demo
Run Code Online (Sandbox Code Playgroud)

但它告诉我:

在“(”附近:语法错误:

我不知道发生了什么,我进行了一些搜索,例如如何在sqlite中使用ROW_NUMBER 。不幸的是,我仍然不知道自己犯了什么错误。一切都会感激的。

max*_*kin 5

3.25版本开始,SQLite支持窗口功能,因此原始查询现在应该可以使用。


Gor*_*off 1

正如评论中提到的,SQLite 不支持row_number()或其他窗口函数。您可以使用相关子查询:

select d.*
from demo d
where d.creator = (select max(d2.creator) from demo d2 where d2.id = d.id);
Run Code Online (Sandbox Code Playgroud)

即使在demo(id, creator)支持row_number().