Android / SQLite:将默认排序顺序设置回ROWID的方法

时间:2015-03-24 14:47:18

标签: android sql sqlite sorting android-sqlite

我的应用程序出现问题,因为SQLite以某种方式改变了默认排序顺序的行为。

直到SQLite 3.7.5(至少)当查询没有" ORDER BY"子句,结果按rowid排序。现在使用SQLite 3.8.6,它们按主键排序。

SQLite 3.7.5:

select rowid, id, name from users;

rowid   id    name
--------------------
1       10    John
2       15    Peter
3       11    Mary
4       14    Sam

SQLite 3.8.6:

select rowid, id, name from users;

rowid   id    name
-------------------
1       10    John
3       11    Mary
4       14    Sam
2       15    Peter

我有无数的查询需要更改,我只需添加" ORDER BY ROWID"。

SQLite是否有一个参数,我可以将默认排序顺序设置回ROWID?

1 个答案:

答案 0 :(得分:2)

documentation说:

  

如果SELECT省略了ORDER BY子句,SQLite不保证结果的顺序。即便如此,结果的顺序也不会从一次运行变为另一次运行,因此许多应用程序错误地依赖于任意输出顺序,无论顺序是什么。但是,有时新版本的SQLite将包含优化器增强功能,这些增强功能将导致没有ORDER BY子句的查询的输出顺序发生变化。发生这种情况时,依赖于某个输出顺序的应用程序可能会发生故障。