我有一张访问表(人员,访问类型,日期,...),我想按访问类型和人员分组,然后选择每个组中具有 MAX(日期)的记录。我很确定使用查询代数而不是编写 SQL 应该很简单,但似乎无法让它工作。我认为它会是这样的:
Visit.group(:visit_type, :person).having("date = MAX(date)")
但这不会从每个组中选择单个记录。
编辑:啊!经过更多调查 - 事实证明上述方法确实有效!耶!
编辑:啊!它适用于 sqlite 和 mySql,但不适用于 postgres,这与根据标准更严格地实现 group_by 函数有关。嘘,垃圾!这意味着我仍在寻找答案。
编辑:我不认为这每次在 sqlite 上都能给出正确的结果。