对整个SQLite表进行排序

时间:2010-12-31 04:54:48

标签: sqlite sorting

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

解释

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

2 个答案:

答案 0 :(得分:7)

假设您创建原始表格如下:

CREATE TABLE my_table (rowid INTEGER PRIMARY KEY, name TEXT, somedata TEXT) ;

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

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 ;

如果您想要替换原始表:

DROP TABLE my_table ;
ALTER TABLE my_ordered_table RENAME TO my_table;

答案 1 :(得分:2)

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

为了更好地解释为什么你应该依赖ORDER BY以所需的顺序检索数据而不是假设数据会以主键确定的顺序出现,请参阅Cruachan对similar question <的回答/ p>

相关问题