2011-05-29 80 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,这似乎是你所要求的最后日期?