我正在使用 IN 查询搜索记录,如下所示:
Event.where("events.id IN (#{events.nil? ? '' : events.collect(&:id).join(',')})")
产生如下输出:
SELECT "events".* FROM "events" WHERE (events.id IN (143,169,139,48,172,146,145,124,111,49,108,18,113,144)) AND (status = 'live') LIMIT 10
但是,默认情况下会按 update_at 排序。我希望它按查询的 IN 部分排序。我的意思是,我希望这是它返回的顺序:
143,169,139,48,172,146,145,124,111,49,108,18,113,144
这有可能吗?
我还必须注意,我不能在表格中添加优先级列或类似的列,因为“事件”部分将动态生成。
我刚刚在这里发现了一个非常相似的问题:
使用 Rails Active Record 在 IN 列表中的 Postgres ORDER BY 值
随意将我的这个标记为重复