Heim >Datenbank >MySQL-Tutorial >Wie finde ich den maximalen Signalwert für jede ID in einer SQL-Tabelle?
Maximale Signalabfrage für jede ID
Frage:
Gegeben sei eine Tabelle mit mehreren Signalen Werte, die jeder ID zugeordnet sind. Wie kann eine Abfrage geschrieben werden, um den maximalen Signalwert für jede eindeutige ID abzurufen? Betrachten Sie die folgende Beispieltabelle:
ID Signal Station OwnerID 111 -120 Home 1 111 -130 Car 1 111 -135 Work 2 222 -98 Home 2 222 -95 Work 1 222 -103 Work 2
Antwort:
Um den maximalen Signalwert für jede ID abzurufen, ohne andere Spalten wie Station und OwnerID zu beeinflussen, muss eine selbst Join kann verwendet werden:
select cur.id, cur.signal, cur.station, cur.ownerid from yourtable cur where not exists ( select * from yourtable high where high.id = cur.id and high.signal > cur.signal )
Diese Abfrage verknüpft die Tabelle mit sich selbst, um ein kartesisches Produkt zu erstellen. Für jedes Zeilenpaar wird geprüft, ob der Signalwert der zweiten Zeile (high) größer ist als der der ersten Zeile (cur). Wenn für dieselbe ID ein höherer Signalwert gefunden wird, wird die aktuelle Zeile ausgeschlossen.
Das Ergebnis ist eine Tabelle, die nur die Zeilen mit dem maximalen Signalwert für jede ID enthält. Für die Beispieltabelle wäre die Ausgabe:
ID Signal Station OwnerID 111 -120 Home 1 222 -95 Work 1
Das obige ist der detaillierte Inhalt vonWie finde ich den maximalen Signalwert für jede ID in einer SQL-Tabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!