【问题标题】:SQLite removing a row, and reordering the rest of the rowsSQLite 删除一行,并对其余行重新排序
【发布时间】:2021-03-02 15:48:47
【问题描述】:

我正在为一些相对简单的事情苦苦挣扎,

假设我有一个表,第一列是主键自增

id name age
1 tom 22
2 harry 33
3 greg 44
4 sally 55

我想删除第 2 行和其余项目以自动重新排序,使其看起来像这样

id name age
1 tom 22
2 greg 44
3 sally 55

我已经尝试了我可以在网上找到的所有可用建议,它们都涉及从不起作用的 sqlite_sequence 表中删除表名

有没有一种简单的方法来归档我所追求的?

【问题讨论】:

  • 你不想这样做。 id 应该使用固定值来标识行,无论是跨数据库(即用于外键关系)还是跨时间。如果您想在查询表时查看顺序值,请使用 row_number()。

标签: python sql sqlite


【解决方案1】:

我看不到重新排序id 列的意义/需要,因为即使删除了一条或多条记录,那里的所有值仍将是唯一的。如果你真的想以这种方式查看你的数据,你可以删除上面提到的记录,然后使用ROW_NUMBER:

DELETE
FROM yourTable
WHERE id = 2;

SELECT ROW_NUMBER() OVER (ORDER BY id) id, name, age
FROM yourTable
ORDER BY id;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 2021-03-21
    • 1970-01-01
    • 2013-12-03
    • 2023-03-07
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    相关资源
    最近更新 更多