2011-05-29 100 views
1

組的最後一排,我有以下查詢:MySQL查詢只選擇日期

SELECT ELO,日期(date_calculated)日期從users_historical_elo其中uid = 36 ORDER BY ID ASC

產生這樣的結果:

| elo | date

|984|2011-04-04

|1010|2011-04-04

|1036|2011-04-04

|1016|2011-04-08

|1000|2011-04-08

|944|2011-04-09

|973|2011-04-09

...

我需要幫助編寫一個查詢,按日期只選擇最後一個「elo」分組。所以輸出應該是:

| elo | date

|1036|2011-04-04

|1000|2011-04-08

|973|2011-04-09

...

謝謝!

+0

你的意思'| 1016 | 2011-04-08',對不對? – 2011-05-29 01:00:09

+0

哦,對不起,你有'按ID訂購',好。 – 2011-05-29 01:01:44

+1

http://stackoverflow.com/questions/3449757/sql-group-by-records-and-then-get-last-record-from-each-group – NAVEED 2011-05-29 01:09:23

回答

4

如果id是表的主鍵,那麼這將做到:

SELECT elo 
    , date(date_calculated) AS date 
FROM users_historical_elo 
    JOIN 
    (SELECT MAX(id) AS id 
     FROM users_historical_elo 
     WHERE uid =36 
     GROUP BY date(date_calculated) 
    ) AS grp 
    ON grp.id = users_historical_elo.id 
ORDER BY grp.id ASC 
+0

它完美的工作,謝謝 – newyuppie 2011-05-29 02:43:54

+0

道德的額外信貸;)如果我有相同的情況,我怎麼能修改這個查詢,但我需要選擇按日期分組的*倒數第二個* elo? – newyuppie 2011-05-29 21:01:05

0

嘗試:

SELECT elo, date(date_calculated) date FROM users_historical_elo WHERE uid =36 group by date order by id asc

0

此:

SELECT elo, MAX(date) FROM users_historical_elo 

將返回ELO和任何ELO,這似乎是你所要求的最後日期?