3

如果表Scores如下所示:

_id | score
---------
  1 | 1,000
  2 | 2,000
  3 | 3,000
  4 | 4,000
  5 |    -1
  6 |    -1
  7 |    -1

以下查询是否总是以 _id 升序返回行?

SELECT * FROM Scores

此外,以下查询是否总是返回 _id 的第一个有序出现(即 5)?

SELECT _id FROM Scores WHERE Score = -1 LIMIT 0, 1

这里的关键是始终。我已经对其进行了测试,它按预期工作,但我想验证这个结果是否得到保证,并且order by在这些情况下不需要一个子句。

谢谢你们。

4

2 回答 2

1

默认情况下,行在逻辑上按 rowid 递增的顺序存储。

如果您的 select 语句不包含 order by,或者表没有索引,则默认排序顺序将始终是主键列,在这种情况下为 _ID 列

在这里阅读更多

于 2014-06-16T07:01:08.123 回答
1

数据库的原则之一是您不能假设您的寄存器以任何方式排序,因为 SQLite 的内部实现可能因设备而异。您应该使用运算符order by来确保某个顺序。

于 2014-06-16T06:57:48.730 回答