Den falska rownum-lösningen är smart, men jag är rädd att den inte skalas bra (för komplexa frågor måste du gå med och räkna på varje rad antalet rader före nuvarande rad).
Jag skulle överväga att använda create table tmp as select /*your query*/
.eftersom i fallet med en create as select-operation är den rad som skapas när raderna infogas exakt vad som skulle vara radnumret (en räknare). Det specificeras av SQLite-dokumentet.
När den första frågan har infogats behöver du bara fråga tmp-tabellen:
select rowid, /* your columns */ from tmp
order by rowid