Первый шаг, создание представления для набора данных, с объединениями и т. Д.:
CREATE VIEW my_view AS
SELECT _id, field FROM my_table
Второй шаг:
CREATE VIEW my_view2 AS
SELECT count(*) AS row_id, q1.*
FROM my_view AS q1
LEFT JOIN my_view AS q2
WHERE q1._id >= q2._id
GROUP BY q1._id
Затем просто:
SELECT * FROM my_view2
Результаты:
row_id | _id | field
1 4 XbMCmUBFwb
2 6 Te JMejSaK
3 8 dDGMMiuRuh
4 10 phALAbnq c
5 11 EQQwPKksIj
6 12 PAt tbDnf
7 13 f zUSuhvM
8 14 TIMBgAGhkT
9 15 OOcnjKLLER
Чтобы получить позицию по id:
SELECT * FROM my_view2 WHERE _id=11
Результаты:
row_id | _id | field
5 11 EQQwPKksIj
Надеюсь, что поможет