这是针对MySQL的,但可能有更通用的SQL语句。不过,我并不真的需要它是可移植的。
我有一个这样的表:
| 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。
如何获得为每个站点捕获单行的结果集,以及该站点的日期的最大可能值?
结果将是:
| id | site | used | date |
| 1 | A | 180 | 9/15 |
| 4 | B | 200 | 9/15 |
| 7 | C | 910 | 9/14 |发布于 2011-09-16 02:52:19
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但是,如果有多个站点记录具有相同的日期,则会得到重复的行。
发布于 2011-09-16 02:58:37
SELECT * FROM (
SELECT * FROM `test` ORDER BY date DESC
) AS t
GROUP BY `site`https://stackoverflow.com/questions/7435891
复制相似问题