Mein Tisch ist:
id
Startseite
datetime
Spieler
Ressource
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
Ich muss jedes einzelne Element auswählen home
die den maximalen Wert von datetime
.
Das Ergebnis wäre:
id
Startseite
datetime
Spieler
Ressource
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
Ich habe es versucht:
-- 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
Funktioniert nicht. Die Ergebnismenge hat 130 Zeilen, obwohl die Datenbank 187 Zeilen enthält. Das Ergebnis enthält einige Duplikate von 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
Nö. Es gibt alle Aufzeichnungen.
-- 3 ..something exotic:
Mit unterschiedlichen Ergebnissen.
0 Stimmen
Ist damit Ihre Frage beantwortet? Holt die Zeilen, die den Max-Wert für eine Spalte haben, für jeden eindeutigen Wert einer anderen Spalte