如何有条件地改变优势?

时间:2015-11-13 08:34:35

标签: sqlite sql-order-by

我有条件地orderBy我的查询。所有已完成的任务(已完成1)应低于未完成并按完成时间排序,未完成的任务应按优先级值排序。我收到以下声明:

orderBy = TaskTable.COLUMN_TASK_COMPLETED + " ASC, CASE " +TaskTable.COLUMN_TASK_COMPLETED+" WHEN 0 THEN " +TaskTable.COLUMN_TASK_PRIORITY +"  WHEN 1 THEN "+TaskTable.COLUMN_TASK_COMPLETED_TIME + "  END DESC";

现在,我想要更改它,以优先顺序排列ASC属性,completed_timeDESC属性一起排序。

我试过了:

orderBy = TaskTable.COLUMN_TASK_COMPLETED + " ASC, CASE " +TaskTable.COLUMN_TASK_COMPLETED+" WHEN 0 THEN " +TaskTable.COLUMN_TASK_PRIORITY +" ASK  WHEN 1 THEN "+TaskTable.COLUMN_TASK_COMPLETED_TIME + " DESC  END";

但它返回错误:

  

引起:android.database.sqlite.SQLiteException:near" ASC&#34 ;:语法错误(代码1):,编译时:SELECT * FROM task_table WHERE(task_name LIKE?)ORDER BY task_completed ASC, CASE task_completed WHEN 0 THEN task_priority ASC WHEN 1 THEN task_completed_time DESC END

如何解决?

1 个答案:

答案 0 :(得分:0)

ASC / DESC规范只能应用于ORDER BY子句中使用的顶级表达式。

如果您有数字列,则可以简单地否定其值,即不是按X排序,而是按-X排序。