Sqlite create/insert 数字序列根据当前数字顺序转换为现有列

Sqlite create/insert number sequence into existing column based on current number order

我将 Python 与 SQLite 一起使用,并想将数字序列(1、2、3、4...)插入到 [=21] 中的单个 SELECTION_POSITION 列中=] table。我尝试使用 row_number 但不确定 how/if 我可以用它进行更新而不仅仅是 select:

cursor.execute('select SELECTION_POSITION, row_number() OVER (ORDER BY SELECTION_POSITION) AS row_number FROM SELECTION_GROUPS ORDER BY SELECTION_POSITION;')

如果无法做到这一点,是否有 another/better 方法根据该列的当前顺序将值 overwrite/insert 放入该列(如果程序发现任何 duplicate/out 的订单条目,并使其保持尽可能相似的头寸顺序)

如果您的 SQLite 版本是 3.33.0+,您可以使用 UPDATE...FROM 语法更新 table:

UPDATE SELECTION_GROUPS AS t1
SET SELECTION_POSITION = t2.rn
FROM (
  SELECT rowid, 
         ROW_NUMBER() OVER (ORDER BY SELECTION_POSITION, rowid) AS rn
  FROM SELECTION_GROUPS
) AS t2
WHERE t2.rowid = t1.rowid;