如何有条件地改变优势?
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_time
按 DESC
属性排序。
我试过了:
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
.
排序
我有条件地想要 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_time
按 DESC
属性排序。
我试过了:
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
.