【问题标题】:Android/SQLite: Way to set default sort order back to ROWIDAndroid/SQLite:将默认排序顺序设置回 ROWID 的方法
【发布时间】:2015-03-24 14:47:17
【问题描述】:

我的应用程序出现问题,因为 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 的参数?

【问题讨论】:

    标签: android sql sqlite sorting android-sqlite


    【解决方案1】:

    documentation 说:

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

    【讨论】:

    • 好的,知道了!听起来我必须更改所有查询。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    相关资源
    最近更新 更多