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

时间:2018-05-14 14:10:12

标签: sql sqlite

我想基于+---+--------------------+ | id| vec| +---+--------------------+ | 0|[3, 4, 5, 6] | | 1|[3, 4, 5, 6] | +---+--------------------+ 函数删除重复项  How to get get Unique Records based on multiple columns from a table 。但是被语法错误阻止了。     我的用例如下: this is my table and it named demo

和我的sql如下:

row_number

但它告诉我:

  

near“(”:语法错误:

我不知道发生了什么,我做了一些搜索,例如How to use ROW_NUMBER in sqlite 。不幸的是,我仍然无法弄清楚我犯了什么错误。什么都会升值。

3 个答案:

答案 0 :(得分:1)

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

select d.*
from demo d
where d.creator = (select max(d2.creator) from demo d2 where d2.id = d.id);

使用demo(id, creator)上的索引,即使在支持row_number()的数据库中,这通常也会有更好的表现。

答案 1 :(得分:1)

window functions起,SQLite支持version 3.25,因此原始查询现在应该可以使用。

答案 2 :(得分:0)

改为使用subquery

select d1.* 
from demo d1
where primarykey = (select d2.primarykey
                    from demo d2
                    where d2.id = d1.id
                    order by d2.creator desc
                    LIMIT 1);