我正在根据优先级(升序)排列数据,在优先级中忽略'0'。
以下是Rails查询:
Profile.where(active: true).order(:priority).pluck(:priority)
此查询返回优先级从“0”开始的记录的有序列表
[0, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 7]
根据下面的例子,你能帮我弄清楚如何订购数据,其中在查询中添加了带有“0”的记录。
Example: [1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 7, 0]
答案 0 :(得分:2)
您可以将字符串传递给#order
以使用原始SQL,因此您可以说:
Profile.where(active: true)
.order('case priority when 0 then 1 else -1 end, priority')
.pluck(:priority)
强制优先级为零的条目到最后。您不必使用1
和-1
作为数字当然,您可以使用任何可读的内容并按正确的顺序排序,您甚至可以使用字符串(假设它们当然排序正确):
.order("case priority when 0 then 'last' else 'first' end, priority")