so wählen Sie nur die Zeile mit der max-Sequenz ohne Verwendung einer Unterabfrage?

Ich versuche, wählen Sie nur die Zeile mit der höchsten seq für jede ID

ID  |  Seq   |  Age
-------------------
 A      1       20   
 A      2       30
 B      1       25
 B      2       32
 B      3       44
 B      4       48
 C      1       11

Diese scheint zu funktionieren

SELECT ID, Age
FROM Persons a
WHERE Seq = (SELECT MAX(Seq) FROM Persons b WHERE a.ID = b.ID)

Aber ist dies der beste Weg, der einzige Weg? Ich weiß nicht, wie mithilfe von Unterabfragen, wenn ich nicht, und ich erinnere mich, die Sie verwenden können, etwas, aber ich vergessen, was es ist. Irgendeine Idee?

  • Was rdbms verwenden Sie?
  • Vor allem SQL-Server, aber wenn es oracle kompatibel ist, dann ist das genial
  • Meine ROW_NUMBER Ansatz funktioniert auch in Oracle als ich getestet habe, mit SQl-Geige. Haben Sie einen Blick auf den link in meiner Antwort.
InformationsquelleAutor jenswirf | 2012-10-31
Schreibe einen Kommentar