1

我正在尝试进行"ORDER BY FIELD"活动记录。我知道我可以做到,MySQL但我试图让我的应用程序不可知并遵循最佳实践。我的生产数据库是PostgreSQL

MySQL 看起来像

SELECT id, name
FROM mytable
WHERE name IN ('B', 'A', 'D', 'E', 'C')
ORDER BY FIELD(name, 'B', 'A', 'D', 'E', 'C')
4

2 回答 2

2

我试图让它发生,这就是我带来的。我仍然认为这可以更干净一些

Model.select(:id).select(:name).order("status = 'B' DESC, status = 'A' DESC, status = 'D' DESC, status = 'E' DESC, status = 'C' DESC")
于 2013-11-11T19:31:52.020 回答
1

一个不可知的选项是将您的状态值移动到另一个模型中,并为排序顺序提供一个额外的属性。

于 2013-11-11T22:16:37.987 回答