【问题标题】:How to sort SQLite table result in specific order?如何按特定顺序对 SQLite 表结果进行排序?
【发布时间】:2016-01-22 08:33:44
【问题描述】:

我的 sqlite 数据库中有一个表,我需要以这种方式对其进行排序..

467958  1010  49611
467958  1010  49612
467958  1010  49613
467958  1010  49614
467958  1010  49615
467958  1010  49616
467958  1010  49617
467958  1010  49618
467958  1010  49619
467958  1010  496110
467958  1010  4961other

但我明白了。

467958  1010  4961other
467958  1010  49611
467958  1010  49612
467958  1010  49613
467958  1010  49614
467958  1010  49615
467958  1010  49616
467958  1010  49617
467958  1010  49618
467958  1010  49619
467958  1010  496110

我的代码是。

cursor = db.query(TABLE_SGQ_LIVE, new String[] {SGQ},
                    null, null, null, null, Q_Id + " ASC, " + G_id  + " ASC");

我的意思是排序(首先是整数,其次是字符串)。

【问题讨论】:

  • 您的query() 调用只选择了一个列 (SGQ),这与显示的数据不对应。请标记列。

标签: android sqlite


【解决方案1】:

基本上你必须先拆分然后排序。

首先,您的桌子设计似乎是错误的。如果要根据多个条件进行排序,则应将它们存储为单独的列。所以重新设计你的桌子。

如果由于某种原因你不能这样做,那么你就不能在 SQL 查询中对其进行排序。 获取数组中的结果,并通过编写自定义排序顺序逻辑将它们排序在数组中。

【讨论】:

  • // 和 Q_Id ,G_id 是表中的字段。阅读代码评论。
  • 这一行,....// where '467958X1010X496110' 'X' is the separator of SID,G_id,Q_ID. 只是为了显示列的值以了解列中的数据类型。
【解决方案2】:

我意识到您可能在 DB 中有不同的列,但是您编写的示例使用“X”作为分隔符!为什么 ?这让我很困惑!

所以基本上你想根据不同的列以不同的排序顺序进行排序..

不要使用 db.query 方法。准备一条 SQL 并使用 rawQuery 方法执行查询。

SQL 应该是:

select * from my_table order by col_a ASC, col_b DSC

【讨论】:

【解决方案3】:

正确答案:

select * from TABLE_SGQ_LIVE order by Q_Id asc, G_id*1, G_id desc

见:Sort numbers (and numbers+letters) with sqlite

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-25
    • 2017-04-08
    • 2017-12-14
    • 2016-11-01
    • 1970-01-01
    • 2020-12-18
    • 2016-01-09
    • 1970-01-01
    相关资源
    最近更新 更多