如何按特定顺序对SQLite表结果进行排序?

时间:2016-01-22 08:33:45

标签: android sqlite

我的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");

我的意思是排序(整数优先,字符串秒)。

3 个答案:

答案 0 :(得分:0)

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

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

如果由于某种原因无法执行此操作,则无法在SQL查询中对其进行排序。 在Array中获取结果,并通过编写自定义排序顺序逻辑对它们进行排序。

答案 1 :(得分:0)

我意识到你在DB中可能有不同的列,但是你用'X'作为分隔符编写了这个例子!!为什么?那让我很困惑!!

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

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

SQL应该是:

select * from my_table order by col_a ASC, col_b DSC

答案 2 :(得分:0)

正确答案:

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

请参阅:Sort numbers (and numbers+letters) with sqlite