sql - 重新复制并重新排序表格

标签 sql sqlite

我正在使用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/

相关文章:

sqlite - 没有 Database.SQLite.Simple.FromField.FromField Char 的实例

c# - 使用PHP显示用于C#程序的SQL表

java - 在android上使用SQLITE出现列约束错误

mysql - 如何组合两个简单的sql查询

mysql - 如何在mysql中将单行插入查询重构为多行插入查询?

rest - 如何在IIS 7上部署DataSnap/REST ISAP dll

python - 从 Access 创建 sqlite 数据库

python - Django 1.10 - 每 X 秒使用数据库中的数据更新网页

java - 有没有办法对我的 JPQL 查询尝试的 WHERE 条件进行排序?

MySQL按请求顺序排序