2011-09-15 46 views
0

這是針對MySQL的,但可能有更普遍適用的SQL語句。不過,我並不需要這種便攜。MySQL查詢以獲得與第二列的最大值配對的列

我有一個表像這樣:

| id | site | used | date | 
| 1 | A | 180 | 9/15 | 
| 2 | A | 110 | 9/14 | 
| 3 | A | 90 | 9/13 | 
| 4 | B | 200 | 9/15 | 
| 5 | B | 220 | 9/14 | 
| 6 | B | 270 | 9/13 | 
| 7 | C | 910 | 9/14 | 
| 8 | C | 930 | 9/13 | 

說明:數據每天都在拍攝,但站點C的最後一天捕獲了9/14。

如何獲得一個結果集,該結果集爲每個網站捕獲單個行,並且該網站的日期可能包含maxmim值?

結果將是:

| id | site | used | date | 
| 1 | A | 180 | 9/15 | 
| 4 | B | 200 | 9/15 | 
| 7 | C | 910 | 9/14 | 

回答

2
select t.* 
from (
    select site, max(date) as MaxDate 
    from MyTable 
    group by site 
) tm 
inner join MyTable t on tm.site = t.site and tm.MaxDate = t.Date 

你會得到重複的行如果有多個站點記錄具有相同的日期,但是。

+0

此表在(date,site)上有一個唯一索引,所以dupe行不是問題。謝謝 – JDS

0
SELECT * FROM (
    SELECT * FROM `test` ORDER BY date DESC 
) AS t 
GROUP BY `site` 
相關問題