我正在使用SQLite。我想创建一个与现有表的数据顺序不同的新表。我已经尝试了以下方法,但是在Mozzilla SQLite管理工具或SQLite Manager中均无法使用。我究竟做错了什么?
INSERT INTO temp (SnippetID, LibraryID,Name, BeforeSelection, AfterSelection, ReplaceSelection, NewDocument, NewDocumentLang, Sort)
SELECT (SnippetID, LibraryID,Name, BeforeSelection, AfterSelection, ReplaceSelection, NewDocument, NewDocumentLang, Sort)
FROM Snippets ORDER BY LibraryID;
谢谢-JZ
最佳答案
我对您的问题是一个简单的“为什么?”。 SQL是关系代数,只有在提取时指定数据集时,数据集才有顺序。
谈论数据的顺序没有任何意义,因为数据库可以随意施加任何喜欢的顺序。任何体面的数据库都不会在乎记录的插入顺序,只在乎可用于有效存储和检索数据的键和约束以及其他属性。
仅当使用select ... order by
提取数据时,才需要固定顺序。如果您希望能够有效地提取LibraryID
列排序的数据,只需对其进行索引并在提取数据时使用order by
子句。
关于sql - 重新复制并重新排序表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3177419/