【发布时间】:2020-11-14 10:12:09
【问题描述】:
我的桌子是:
| id | home | datetime | player | resource |
|---|---|---|---|---|
| 1 | 10 | 04/03/2009 | john | 399 |
| 2 | 11 | 04/03/2009 | juliet | 244 |
| 5 | 12 | 04/03/2009 | borat | 555 |
| 3 | 10 | 03/03/2009 | john | 300 |
| 4 | 11 | 03/03/2009 | juliet | 200 |
| 6 | 12 | 03/03/2009 | borat | 500 |
| 7 | 13 | 24/12/2008 | borat | 600 |
| 8 | 13 | 01/01/2009 | borat | 700 |
我需要选择每个不同的home 保持datetime 的最大值。
结果是:
| id | home | datetime | player | resource |
|---|---|---|---|---|
| 1 | 10 | 04/03/2009 | john | 399 |
| 2 | 11 | 04/03/2009 | juliet | 244 |
| 5 | 12 | 04/03/2009 | borat | 555 |
| 8 | 13 | 01/01/2009 | borat | 700 |
我试过了:
-- 1 ..by the MySQL manual:
SELECT DISTINCT
home,
id,
datetime AS dt,
player,
resource
FROM topten t1
WHERE datetime = (SELECT
MAX(t2.datetime)
FROM topten t2
GROUP BY home)
GROUP BY datetime
ORDER BY datetime DESC
不起作用。结果集有 130 行,尽管数据库有 187 行。
结果包括home 的一些重复项。
-- 2 ..join
SELECT
s1.id,
s1.home,
s1.datetime,
s1.player,
s1.resource
FROM topten s1
JOIN (SELECT
id,
MAX(datetime) AS dt
FROM topten
GROUP BY id) AS s2
ON s1.id = s2.id
ORDER BY datetime
不。提供所有记录。
-- 3 ..something exotic:
各种结果。
【问题讨论】:
标签: mysql sql max distinct greatest-n-per-group