这适用于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 |
描述:每天捕获数据,但Site C的最后捕获日是9/14。
如何获得为每个站点捕获单行的结果集,该站点的日期可能有maxmim值?
结果将是:
| id | site | used | date |
| 1 | A | 180 | 9/15 |
| 4 | B | 200 | 9/15 |
| 7 | C | 910 | 9/14 |
答案 0 :(得分: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
如果有多个具有相同日期的站点记录,您将获得重复的行。
答案 1 :(得分:0)
SELECT * FROM (
SELECT * FROM `test` ORDER BY date DESC
) AS t
GROUP BY `site`