Я хотел бы знать, возможно ли сделать следующее с помощью одного оператора 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|
...
Каждая строка имеет уникальный идентификатор, идентификатор пользователя, значение даты и времени и некоторые другие данные.
Я хотел бы удалить записи, чтобы сохранить последние 10 записей для каждого пользователя на основе SomeDate.
На сервере SQL я бы использовал что-то вроде этого:
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
Есть ли способ сделать это в sqlite? Крайний случай, когда есть несколько записей с одним SomeDate, не вызывает особого беспокойства, например, если я буду хранить все эти записи, все будет в порядке.