You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQLite中如何按时间戳更新表ID并填充sort_id列?

SQLite表a新增sort_id并分配连续序号的高效方案

1. 先添加sort_id列

执行SQL给table_a新增整数类型的sort_id字段:

ALTER TABLE table_a ADD COLUMN sort_id INTEGER;

2. 用窗口函数直接更新序号

利用SQLite的窗口函数ROW_NUMBER(),按timestamp升序生成连续的1、2、3...序号,直接更新原表,无需重新插入数据:

WITH ranked_records AS (
    SELECT a_id, ROW_NUMBER() OVER (ORDER BY timestamp ASC) AS seq
    FROM table_a
)
UPDATE table_a
SET sort_id = ranked_records.seq
FROM ranked_records
WHERE table_a.a_id = ranked_records.a_id;

注意事项

  • 该方法要求SQLite版本在3.25.0及以上(窗口函数从这个版本开始支持)
  • 若存在timestamp相同的记录,ROW_NUMBER()会给它们分配不同序号;如果需要相同时间戳的记录序号一致,可替换为RANK()或DENSE_RANK(),根据实际需求调整
  • 操作直接在原表上完成,避免了数据迁移的额外开销,效率较高

内容的提问来源于stack exchange,提问作者xxjoe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 09:16:14