Rails 最后排序为 nil - SQLite3 错误
Rails ordering with nil last - SQLite3 error
目前,我正在尝试通过 limit
属性来订购我的 class。我希望值按升序排列,但所有 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
limit IS NULL
就可以了,但是limit
是sqlite3中的保留关键字,所以用反引号或者引号括起来:
self.order('`limit` IS NULL')
对于任何好奇的人,我使用了 self.order("-cutoff DESC")
。简单易行。
目前,我正在尝试通过 limit
属性来订购我的 class。我希望值按升序排列,但所有 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
limit IS NULL
就可以了,但是limit
是sqlite3中的保留关键字,所以用反引号或者引号括起来:
self.order('`limit` IS NULL')
对于任何好奇的人,我使用了 self.order("-cutoff DESC")
。简单易行。