ich eine Tabelle db_race habenfür alle Zeilen
--------------------------
| Name | Time | Map |
--------------------------
| Max | 240 | test1 |
| Alvin | 600 | test2 |
| Amanda | 234 | test1 |
| Angela | 50 | test1 |
| Angela | 2000 | test1 |
--------------------------
ich jetzt wählen wollen einige Zeilen geordnet nach beste Zeit auf einer Karte wie folgt
SELECT Name, min(Time) AS Time
FROM db_race
WHERE Map='test1'
GROUP BY Name
ORDER BY Time ASC
Das funktioniert ganz gut, aber ich möchte die beste Zeit aller Datensätze zu einer anderen Spalte hinzugefügt haben, die wie folgt aussieht. (Wird später mit dem arbeiten, aber das ist nicht ein Teil der Frage)
----------------------------
| Name | Time | TopTime |
----------------------------
| Angela | 50 | 50 |
| Amanda | 234 | 50 |
| Max | 240 | 50 |
----------------------------
Bisher habe ich versucht, die folgenden, aber es zeigt nur die beste Zeit, ich will es für die ganze ausgewählte Tabelle
SELECT *, min(Time) AS TopTime
FROM (SELECT Name, min(Time) AS Time
FROM db_race
WHERE Map='test1'
GROUP BY Name
ORDER BY Time ASC) a
Ich möchte sicherstellen, dass ich die TopTime nicht mithilfe einer Unterabfrage finden muss. Die eigentliche Abfrage wird sehr lang sein und mein Ziel ist es, sie nicht zweimal auszuführen.
Danke, aber das funktioniert nicht für mich (immer noch nur eine Zeile). Ihre erste Lösung war, dass Sie vergessen haben, die Where-Klausel hinzuzufügen. Wenn Sie das ändern, markieren Sie es als gelöst. – kamille
Sollte gut zu gehen sein. – Santi
In der Tat hatten Sie Recht mit Ihrem anderen Versuch, mir zu helfen. Ich kann diese Abfrage nicht so verwenden, da ich keine Unterabfrage verwenden kann, um die TopTime herauszufinden (in Wirklichkeit ist es eine viel längere Abfrage). Mein Ziel ist es, die TopTime in einer zweiten Spalte zu haben, ohne 2 Abfragen auszuführen. – kamille