【问题标题】:Rails ordering with nil last - SQLite3 error使用 nil last 排序的 Rails - SQLite3 错误
【发布时间】:2015-04-09 23:06:13
【问题描述】:

目前,我正在尝试通过limit 属性对我的课程进行排序。我希望这些值按升序排列,但所有 nil 值都在最后。

我尝试了几个不同的查询 ActiveRecord 查询以及跨基础 SQL 查询(它需要 SQL 灵活)。我已经尝试了一些:

self.order('ISNULL(limit), limit ASC')
self.order('CASE WHEN -limit DESC')
self.order('limit IS NULL, limit DESC')

但我在limit 周围不断收到错误消息,我错过了什么吗?

SQLite3::SQLException: near "ISNULL": syntax error: SELECT "table".*      
FROM "table"  WHERE "table"."deleted_at" IS NULL ORDER BY ISNULL(limit),   
limit ASC

【问题讨论】:

    标签: sql ruby-on-rails ruby sqlite null


    【解决方案1】:

    对于任何好奇的人,我使用了self.order("-cutoff DESC")。这很简单,可以完成工作。

    【讨论】:

      【解决方案2】:

      limit IS NULL 会这样做,但limit 是 sqlite3 中的保留键,因此请将其括在反引号或引号中:

      self.order('`limit` IS NULL')
      

      【讨论】:

        猜你喜欢
        • 2014-03-25
        • 2013-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-28
        • 2012-07-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多