如何有条件地改变优势?

How to conditionally change ascendancy?

我有条件地想要 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";

但是returns错误:

Caused by: android.database.sqlite.SQLiteException: near "ASC": syntax error (code 1): , while compiling: 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

如何解决?

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

当你有一个数字列时,你可以简单地否定它的值,即不按 X 排序,而是按 -X.

排序