我有条件地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";
但它返回错误:
引起: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
如何解决?
答案 0 :(得分:0)
ASC / DESC规范只能应用于ORDER BY子句中使用的顶级表达式。
如果您有数字列,则可以简单地否定其值,即不是按X
排序,而是按-X
排序。