Создать поле автоинкремента в sqlite - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь создать правильный выбор, чтобы иметь номер строки для упорядоченного значения в таблице. Прямо сейчас в выходных данных есть поле row_num для подсчета, но я хотел бы, чтобы количество отсортировывалось по возрастанию на основе value столбца до его создания.

Если возможно, как это можно сделать?

Существующий код:

select id, value, (select count(*)
   from tbl b where a.id >= b.id) as row_num
from tbl a order by value asc

Токовый выход (без заказа): Fiddle

id | value | row_num
1  | jbl   | 1
3  | bog   | 2
4  | tak   | 3
6  | oza   | 4
8  | ars   | 5

Текущий вывод (с упорядочением по значению): Fiddle

id | value | row_num
8  | ars   | 5
3  | bog   | 2
1  | jbl   | 1
6  | oza   | 4
4  | tak   | 3

Желаемый вывод:

id | value | row_num
8  | ars   | 1
1  | bog   | 2
3  | jbl   | 3
6  | oza   | 4
8  | tak   | 5

Есть похожий поток ( Как использовать ROW_NUMBER в sqlite ), но столбец value не был отсортирован.

Спасибо.

1 Ответ

0 голосов
/ 07 августа 2020

Используйте функцию окна row_number().

SELECT id
     , value
     , row_number() OVER (ORDER BY value) AS row_num
FROM tbl
ORDER BY value;
...