我有一個表是這樣的:選擇不重複的記錄,同時保持其他領域的完整
table: searches
+------------------------------+
| id | address | date |
+------------------------------+
| 1 | 123 foo st | 03/01/13 |
| 2 | 123 foo st | 03/02/13 |
| 3 | 456 foo st | 03/02/13 |
| 4 | 567 foo st | 03/01/13 |
| 5 | 456 foo st | 03/01/13 |
| 6 | 567 foo st | 03/01/13 |
+------------------------------+
而想要一個結果集是這樣的:
+------------------------------+
| id | address | date |
+------------------------------+
| 2 | 123 foo st | 03/02/13 |
| 3 | 456 foo st | 03/02/13 |
| 4 | 567 foo st | 03/01/13 |
+------------------------------+
但是ActiveRecord的似乎無法達到這個結果。這裏就是我想:
- 模型具有「most_recent」範圍:
scope :most_recent, order('date_searched DESC')
- 返回全套(
SELECT DISTINCT "searches".* FROM "searches" ORDER BY date DESC
) - 顯然查詢是不會做我想做的,但也不是隻選擇一列。我需要所有列,但只有address
在結果集中唯一的行。 - 我可以做一些像
Model.select('distinct(address), date, id')
,但那種感覺......錯了。
@ChrisCashwell:在sqlfiddle鏈接我張貼返回同樣的事情,在你的榜樣(每個地址的最近日期**),除了它總是返回每個地址的最高ID。你使用的是什麼RDBMS? – creinig 2013-03-21 16:05:22