【问题标题】:How to conditionally change ascendancy?如何有条件地改变优势?
【发布时间】:2016-02-14 18:58:39
【问题描述】:

我有条件地想要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:靠近“ASC”:语法错误(代码 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

如何解决?

【问题讨论】:

    标签: sqlite sql-order-by


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-04
      • 2023-04-04
      • 2021-11-21
      • 1970-01-01
      相关资源
      最近更新 更多