我正在使用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是一种关系代数,数据集只有在提取时指定它才有顺序.
谈论数据的顺序是没有意义的,因为您的数据库可以自由地强加任何它喜欢的顺序.任何体面的数据库都不会关心插入记录的顺序,只关注键和约束以及可用于有效存储和检索数据的其他属性.
只有当您使用a提取数据时才select ... order by
需要修复订单.如果您希望能够有效地提取LibraryID
列所排序的数据,只需将其编入索引并order by
在提取数据时使用子句.