Rails用nil排序 - SQLite3错误

时间:2015-04-09 23:06:13

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

目前,我正在尝试按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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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