对整个SQLite表进行排序

Kyl*_*lls 5 sqlite sorting

我有一个SQLite表,我需要排序.我熟悉这个ORDER BY命令,但这不是我想要完成的.我需要在数据库中排序整个表.

说明:

我的表使用一个名为列的列rowed来设置表的顺序(一个键?).我需要通过另一列调用对表进行排序name,然后根据字母顺序重新分配rowid数name.可以这样做吗?

Sas*_*asq 9

假设您创建了原始表,如下所示:

CREATE TABLE my_table (rowid INTEGER PRIMARY KEY, name TEXT, somedata TEXT) ;
Run Code Online (Sandbox Code Playgroud)

您可以创建另一个排序表,如下所示:

CREATE TABLE my_ordered_table (rowid INTEGER PRIMARY KEY, name TEXT, somedata TEXT) ;
INSERT INTO my_ordered_table (name, somedata) SELECT name,somedata FROM my_table 
ORDER BY name ;
Run Code Online (Sandbox Code Playgroud)

如果您想要替换原始表:

DROP TABLE my_table ;
ALTER TABLE my_ordered_table RENAME TO my_table;
Run Code Online (Sandbox Code Playgroud)


d5e*_*5e5 4

我认为这个问题与希望主键有意义有关。避免那个陷阱。选择一个任意生成的主键,唯一标识一行数据,没有其他意义。否则,您最终会遇到想要更改主键值以保留含义的问题。

要很好地解释为什么应该依靠 ORDER BY 按所需顺序检索数据,而不是假设数据将按主键确定的顺序出现,请参阅 Cruachan 对类似问题的回答