Zum Inhalt springen

Datensätze filtern (Max / Group by)


netcon

Empfohlene Beiträge

Hallo Zusammen

Ich kenne mich in SQL nur mit den Basics aus und stehe nun bei einem Problem an. Ich möchte eine Abfrage aus einer MySQL DB machen, bei der nur jeweils die Zeilen mit der höchsten Versions-Nummer ausgegeben werden,

Man hat z.B. folgende Tabelle:

________________________

| id | Version | Text |

=====================

| 1 | 1 | row1 |

| 1 | 2 | row2 |

| 2 | 1 | row3 |

---------------------------

In meiner Ausgabe will ich nun nur die Datensätze mit der höchsten Version-Nummer haben. Also z.B:

| 1 | 2 | row2 |

| 2 | 1 | row3 |

Wenn ich nun folgende Abfgrage verwende:

SELECT id, max(version), text FROM `test` Group by id

bekomme ich folgendes Ergebnis.

| 1 | 2 | row1 |

| 2 | 1 | row3 |

Ich bekomme also nur die grösste Version-Nummer für die jeweilige ID zurück, aber nicht die ganze Zeile, die zu der ID gehört. Die Spalte Text gehört immer noch zum ersten Datensatz.

Müsste man hier die Abfrage mit einer zweiten Select Anweisung in einer Where-Abfrage machen oder etwas in der Art?

Vielen Dank für eure Hilfe.

Link zu diesem Kommentar
Auf anderen Seiten teilen


Wenn ich nun folgende Abfgrage verwende:

SELECT id, max(version), text FROM `test` Group by id
Was du brauchst ist nicht die max(version) im select, sondern als filter in der WHERE oder von mir aus auch HAVING klausel.
DECLARE @test TABLE(pk int, id INT, vers INT, txt VARCHAR(255))

INSERT INTO @test Values (1,1,1,'eins'), (2,1,2,'zwei'), (3,2,1,'drei')


SELECT *

FROM @test t1

WHERE t1.pk =

	(SELECT top 1 pk 

	 FROM @test t2 

	 WHERE t2.id = t1.id 

	 ORDER BY id DESC

) 

war jetzt in mssql auf die schnelle reingehackt, kann mir allerdings nicht vorstellen, dass mysql das nicht frisst. (von der table variablen mal abgesehen, das is ja aber nich das zentrale)

pk steht übrigens für primary Key, ich hoff mal seeehr stark, dass du einen in der Tabelle hast.

Gruß

Sven

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...