Android sqlite, установить позицию строки для нового столбца - PullRequest
0 голосов
/ 03 мая 2018

Я добавил новый столбец (position) в таблицу. Это нужно заказать от 0 до n. И должен отражать порядок строк на _id. Но дело в том, что у _id есть пробелы, потому что некоторые строки были удалены, а у position не должно быть пробелов.

Как это:

_id   position[new column]
1     0 
4     1   
8     2
17    3

Как я могу добиться этого во время обновления базы данных? Было бы здорово иметь только один SQL-оператор для выполнения с execSQL, без необходимости запрашивать существующие данные с помощью курсоров.

1 Ответ

0 голосов
/ 03 мая 2018

Другие СУБД имеют ROW_NUMBER(), чтобы сделать это проще.

В SQLite вы можете использовать коррелированный подзапрос, чтобы подсчитать, «сколько строк имеют более низкий идентификатор, чем этот». Ответ на который в точности соответствует желаемому столбцу перечислителя (position) .

UPDATE
  yourTable
SET
  position = (SELECT COUNT(*)
                FROM yourTable   lookup
               WHERE lookup._id < yourTable._id
             )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...