SQLite是否保证结果的顺序与表匹配?

时间:2014-06-16 06:54:40

标签: android sql sqlite sql-order-by sql-limit

如果表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子句。

谢谢大家。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

默认情况下,行按照增加rowid的顺序进行逻辑存储。

如果您的选择标记不包含订单,或者表没有索引,则默认排序顺序将始终为主键列,在这种情况下为_ID列

了解更多here