android sqlite排序/ ORDER BY查询

时间:2016-03-06 20:53:02

标签: android sqlite sorting android-cursorloader

我有组合列表,其中包含红色或不包含红色。我想按如下方式对结果进行排序 -

如果颜色不是红色,则按字母顺序显示结果。 (继续列表)--->如果颜色为红色,则按字母顺序显示元素的其余部分。

我期待以下结果:

//如果颜色不是红色,则按字母顺序显示结果

橙色A(颜色不是红色和按字母顺序排列)

蓝色B(颜色不是红色和按字母顺序排列)

白色C(颜色不是红色和按字母顺序排列)

黑色D(颜色不是红色和按字母顺序排列)

//(继续列表)--->如果颜色为红色,则按字母顺序显示元素的其余部分

红色A(颜色为红色和按字母顺序排列)

红色B(颜色为红色和按字母顺序排列)

红色C(颜色为红色&按字母顺序排列)

为实现这一目标,我正在尝试以下查询:

public Loader<Cursor> onCreateLoader(int id, Bundle args) {
    switch (id) {

        case SORT_BY_ALPHABETICALLY:

            String orderAlphabetically = BY_NAME + " ASC, "
                + BY_COLOR + " ASC";

            return new CursorLoader(ctx,
                    URI,
                    null,
                    null,
                    null,
                    orderAlphabetically);

但是上面的查询没有给出预期的结果。

1 个答案:

答案 0 :(得分:0)

您希望先按红色排序,然后按名称排序。

在SQLite中,布尔表达式返回0或1,因此这正是您想要排序的内容:

SELECT ... ORDER BY Color = 'red' ASC, Name ASC;