【问题标题】:Create auto-increment field in sqlite在 sqlite 中创建自增字段
【发布时间】:2020-08-07 04:38:30
【问题描述】:

我正在尝试创建正确的选择,以便在表中获得有序值的行号。现在,输出确实有用于计数的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

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

谢谢。

【问题讨论】:

    标签: sqlite row-number


    【解决方案1】:

    使用row_number()窗口函数。

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

    【讨论】:

      猜你喜欢
      • 2014-10-12
      • 2012-04-12
      • 2011-10-22
      • 1970-01-01
      • 2017-04-01
      • 2018-04-27
      • 2011-06-01
      • 2017-06-01
      • 1970-01-01
      相关资源
      最近更新 更多