【发布时间】:2015-06-19 20:58:54
【问题描述】:
我有如下表结构(简化)
id | version | slug | state
-------------------------------
1 | 1 | A | published
2 | 2 | A | draft
3 | 1 | B | published
4 | 1 | C | published
4 | 2 | C | published
4 | 3 | C | draft
我想获取版本号最高的所有记录,按 slug 分组以及发布状态的位置。用于此的 SQL 如下所示:
SELECT DISTINCT ON(slug) *
FROM guides
WHERE state = 'published'
ORDER BY slug ASC, version DESC;
并打包到 Rails 中:
Klass.select('DISTINCT ON(slug) *').where(state: :published).order(slug: :asc, version: :desc)
有更好的语法吗?过去我使用了一点 Arel,但我似乎没有正确理解不同的部分。
【问题讨论】:
标签: ruby-on-rails ruby arel