2017-03-01 2 views
2

Ich habe eine Tabelle mit der folgenden Struktur:Wie bekomme ich den Zeitwert von MAX (Geschwindigkeit) in MySQL?

Id | Speed | Time 

ich die Zeit der Reihe bekommen möchten, dass die maximale Geschwindigkeit enthält.

Meine Beispielabfrage gibt den richtigen Datensatz nicht zurück.

SELECT MAX(speed), time FROM info WHERE id = 1 AND time > 1234 

Antwort

2

Sie könnten das Ergebnis bestellen und den ersten Datensatz nehmen:

SELECT speed, time 
FROM  info 
WHERE id = 1 AND time > 1234 
ORDER BY speed DESC 
LIMIT 1 
+2

Omg, wie habe ich diese Lösung nicht xD erinnern. Vielen Dank! – Engo

+0

Nicht besonders effizient, da die Abfrage zusammengestellt, sortiert und die erste Zeile zurückgegeben werden muss. –

0
SELECT MAX(speed) as speed, time FROM info WHERE id = 1 AND time > 1234 ORDER BY id 

Wahrscheinlich versuchen Sie die Spalte schlecht im holen zu bekommen. Versuchen Sie also, einen Aliasnamen als Spaltennamen zu verwenden.

Oder versuchen Sie es max als Bedingung Wert in einer Unterabfrage als immer:

SELECT * FROM info WHERE id = 1 AND speed = (SELECT MAX(speed) FROM info) AND time>1234; 
+0

Macht dieses "wie" den Unterschied? – Engo

+0

@Engo Wo haben Sie das Ergebnis der Abfrage überprüft? –

+0

In der Datenbank (Workbench) – Engo

0
select id, speed, time 
    from info 
where speed = (select max(speed) 
        from info); 
Verwandte Themen