我有一個訪問表(person,visit_type,date,...),我想通過visit_type和person進行分組,然後選擇每個組中具有MAX(日期)的記錄。我敢肯定它應該是簡單的使用查詢代數而不是編寫SQL,但似乎無法讓它工作。我認爲它會是這樣的:rails activerecord arel group_by something,併爲每個組選擇最大(col)記錄
Visit.group(:visit_type, :person).having("date = MAX(date)")
但是,這並不選擇每組的單條記錄。
編輯:啊!經過多一點調查 - 事實證明上述確實有效!好極了!
編輯:啊!它適用於sqlite和mySql,但不適用於postgres,這與根據標準更嚴格地實施group_by函數有關。噓,垃圾!這意味着我仍然在尋找答案。
編輯:我不認爲這會給每次在sqlite上的正確結果。
不知道如何標記爲正確的,也許我應該刪除?建議... – jjnevis
這是一個很好的問題/答案,我會離開它。我從中學到了一些東西:) – iouri
請參閱編輯 - 不工作postgres,我得到的錯誤討論[這裏](http://stackoverflow.com/questions/1062158/converting-mysql-select-to-postgresql)。仍在尋找優雅的解決方案。 – jjnevis