SQLiteDatabase.Query方法中的多个OrderBy

Har*_*jan 4 sqlite android sql-order-by

我正在使用查询方法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;
}
Run Code Online (Sandbox Code Playgroud)

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

问题2:如果我需要先按顺序排序结果集FLD_CEEID,然后按FLD_CEMID如何通过此查询的参数构造顺序.

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

bie*_*eux 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);
Run Code Online (Sandbox Code Playgroud)