Mi piacerebbe sapere se è possibile effettuare le seguenti operazioni utilizzando una singola istruzione SQLite:equivalente SQLite di row_number() su (partizione ...
Il mio tavolo sembra qualcosa di simile:
|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|
...
Ogni riga ha un ID univoco, un ID utente, un valore datetime, e di alcuni altri dati.
mi piacerebbe eliminare i record in modo continuo gli ultimi 10 record per utente, sulla base di SomeDate.
In sql server userei qualcosa di simile:
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
C'è un modo per fare questo in SQLite? Il caso limite in cui ci sono diversi record con lo stesso SomeDate non è una preoccupazione particolare, ad es. se tengo tutti quei documenti che andrebbero bene.
Certo, posso farlo procedurale, ma voglio un modo per farlo in un unico dichiarazione se possibile. Se procedendo in modo procedurale sarebbe anche possibile utilizzare una singola istruzione per utente, e solo per gli utenti con record nella tabella – Rory
Ah, sì; Non ne ho idea allora. Per curiosità, come puoi farlo in una singola dichiarazione per utente? – sbirch
Bene, questa è la domanda! la sintassi nella domanda mostra come farlo in SQL Server. Non so se questo è possibile in sqlite. Sospetto di no. – Rory