Я хотел бы знать, можно ли сделать следующее, используя один оператор 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, не вызывает особого беспокойства, например. если я сохраню все эти записи, все будет хорошо.