2014-09-24 58 views
0

我有一個表ordersidcolor列,id是唯一列。在rails環境中查詢不同組中最大id的所有記錄

| id | color | 
| ---- | ----- | 
| 1 | Red | 
| 2 | Red | 
| 3 | Green | 
| 4 | Green | 
| 5 | Blue | 
| 6 | Blue | 

我希望能得到他們的color組最大id所有行,查詢結果應該是

| 2 | Red | 
| 4 | Green | 
| 6 | Blue | 

我如何可以查詢正確的結果在軌環境SQLITE3(DEV ENV)和PostgreSQL 9.3(製作環境)

謝謝。

+0

這是一個完美的用例爲'DISTINCT ON':'Order.select( 'DISTINCT ON(彩色)*')命令( '色,ID DESC' )' – MrYoshiji 2014-09-24 19:22:38

+0

@MrYoshiji,謝謝你的回答。看來我沒有得到正確的結果。我應該得到與你的查詢+ .size和'Order.group(:color).length'相同的計數,對吧? – CloudBSD 2014-09-24 19:45:42

+0

@CloudBSD'Order.group(:color).count' – IS04 2014-09-24 19:59:12

回答

2

你可以寫:

Order.group(:color).maximum(:id) 
+0

比我的回答更好,因爲它更簡潔。 – Kevin 2014-09-24 19:54:42

2
Order.select('color, MAX(id) as maxid').group(:color) 

或者,您可以在.group子句之前添加.order(:color)。應該適用於任一數據庫。

相關問題