在sqlite中创建自增字段

Create auto-increment field in sqlite

我正在尝试创建正确的 select 以使 table 中的有序值具有行号。现在,输出确实有计数的 row_num 字段,但我想根据 valuebefore 对计数进行升序排序已创建。

如果可以的话,如何实现?

现有代码:

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

有一个类似的帖子 (How to use ROW_NUMBER in sqlite),但 value 列未排序。

谢谢。

使用row_number() window函数。

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