我的table是:
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:
结果各不相同。
19条答案
按热度按时间yws3nbqq16#
@michae这个被接受的答案在大多数情况下都能很好地工作,但在以下情况下,它失败了。
如果有两行具有相同的homeid和datetime,查询将返回这两行,而不是根据需要返回distinct homeid,对于add distinct in查询,如下所示。
1tu0hz3e17#
这里是mysql版本,它只打印一个组中最大重复项(datetime)的条目。
你可以在这里测试http://www.sqlfiddle.com/#!2/0a4ae/1个
样本数据
带用户变量的mysql版本
接受答案的结果
gdrx4gfi18#
希望下面的查询将给出所需的输出:
clj7thdc19#
试试这个
问候k