在sqlite中创建自增字段
Create auto-increment field in sqlite
我正在尝试创建正确的 select 以使 table 中的有序值具有行号。现在,输出确实有计数的 row_num
字段,但我想根据 value
列 before 对计数进行升序排序已创建。
如果可以的话,如何实现?
现有代码:
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;
我正在尝试创建正确的 select 以使 table 中的有序值具有行号。现在,输出确实有计数的 row_num
字段,但我想根据 value
列 before 对计数进行升序排序已创建。
如果可以的话,如何实现?
现有代码:
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;