4

我正在使用的查询方法SQLiteDatabase。我需要有关此方法的orderBy参数的帮助。

Cursor cursor = sqLiteDatabase.query(tableName, tableColumns, whereClause, whereArgs, groupBy, having, orderBy);

public Cursor getAllCustomexp(int TID) throws SQLException 
{
    Cursor mCursor =
            db.query(false, CEXP_TABLE, new String[] {KEY_CEID, FLD_CETID, FLD_CEEID, FLD_CEMID,
            FLD_CEAMT, FLD_CESEL}, FLD_CETID + " = " + TID, null,
            null, null, FLD_CEEID, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;
}

问题1:在上述查询中,结果集将按FLD_CEEID升序还是降序排序?

问题2:如果我需要先对结果集进行排序FLD_CEEID,然后再FLD_CEMID按此查询的参数构造排序。

是否可以使用此方法进行多个订单?

4

2 回答 2

5

来自SQLite 文档

如果返回多行的 SELECT 语句没有 ORDER BY 子句,则返回行的顺序是未定义的。或者,如果 SELECT 语句确实有 ORDER BY 子句,则附加到 ORDER BY 的表达式列表确定将行返回给用户的顺序。首先根据 ORDER BY 列表中最左边的表达式的计算结果对行进行排序,然后通过计算最左边的第二个表达式来打破平局,依此类推。返回所有 ORDER BY 表达式计算结果为相等值的两行的顺序未定义。每个 ORDER BY 表达式可以选择后跟关键字 ASC(首先返回较小的值)或 DESC(首先返回较大的值)之一。如果既没有指定 ASC 也没有指定 DESC,

答案 1:结果集将按升序排序。

答案 2:

String orderBy = FLD_CEEID + " ASC, " + FLD_CEMID + " ASC";
db.query(false, CEXP_TABLE, new String[] {KEY_CEID, FLD_CETID, FLD_CEEID, FLD_CEMID,
        FLD_CEAMT, FLD_CESEL}, FLD_CETID + " = " + TID, null,
        null, null, orderBy, null);
于 2012-09-09T13:03:41.850 回答
0

它的工作方式类似于SQL Select Order By. 您可以在此处找到详细信息:http ://en.wikipedia.org/wiki/Order_by_(SQL )。

于 2012-09-09T12:42:53.843 回答