相关疑难解决方法(0)

sqlite相当于row_number()over(分区由......?

我想知道是否可以使用单个sqlite语句执行以下操作:

我的表看起来像这样:

|AnId|UserId|SomeDate|SomeData|
|123 |A     |1/1/2010|aadsljvs|
| 87 |A     |2/9/2010|asda fas|
|193 |A     |2/4/2010|aadsljvs|
|927 |A     |7/3/2010|aadsasdf|
|816 |B     |1/1/2010|aa32973v|
|109 |B     |7/5/2010|aaasfd10|
| 39 |B     |1/3/2010|66699327|
...
Run Code Online (Sandbox Code Playgroud)

每行都有唯一的ID,用户ID,日期时间值和一些其他数据.

我想删除记录,以便根据SomeDate保留每个用户的最新10条记录.

在SQL Server中我会使用这样的东西:

delete d
from data d
inner join (
    select UserId
        ,  AnId
        ,  row_number() over ( partition by UserId order by SomeDate desc ) 
              as RowNum
    from data 
) ranked on d.AnId = ranked.AnId
where ranked.RowNum > 10
Run Code Online (Sandbox Code Playgroud)

有没有办法在sqlite中执行此操作?有几个具有相同SomeDate的记录的边缘情况并不特别担心,例如,如果我保留所有这些记录都没问题.

sql sqlite

23
推荐指数
1
解决办法
3万
查看次数

标签 统计

sql ×1

sqlite ×1