2016-10-28 3 views
0

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.

Antwort

0

So etwas vielleicht?

SELECT 
    Name, 
    min(Time) as Time, 
    (SELECT min(Time) FROM db_race WHERE Map='test1') as TopTime 
FROM db_race 
WHERE Map='test1' 
GROUP BY Name 
ORDER BY Time 
+0

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

+0

Sollte gut zu gehen sein. – Santi

+0

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