我使用以下方法创建了一个 SQLite 表:
CREATE TABLE T1 (
CN INTEGER PRIMARY KEY ASC,
Name TEXT
);
如果我这样做:
SELECT * FROM T1
即使没有指定 ORDER BY 子句,我也能按 CN 获取行顺序吗? CN 是 ROWID 的别名吗?
最佳答案
没有默认顺序这样的东西,如果您需要对结果进行排序,请添加明确的 order by 子句。
DBMS 只是简单地进行了优化,以寻找基于查询快速获取所需数据的最佳方式。在这种情况下,它是 CN 上的主键,但这只是因为您的示例非常简单。永远不要依赖 dbms 选择您想要的顺序。
关于带有 PRIMARY KEY ASC 的 SQLite SELECT 默认顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21418425/