MySQL – das letzte

Ich nutze MySQL-Datenbanken um Testergebnisse von automatisierten Testläufen zu speichern. Es kommt dabei oft vor, dass ich von allen Ergebnissen zu einer Testreihe, in der einzelne Tests, die mit einer ID markiert sind und durchaus mehrfach (wiederholt) gemacht werden können, nur das letzte Ergebnis in einer Query haben will. Das geht so:

SELECT * FROM <table> WHERE <my-id-field> IN (SELECT MAX(<id>) FROM <table> GROUP BY <my-id-field>) ORDER BY <my-id-field>;

Wichtig ist, dass man zwei ID-Felder hat. Das erste <id> muss ein auto increment sein, also eine Zahl sein und mit jedem neuen Eintrag in die DB wachsen (das ist sowieso best practice, wenn man eine Tabelle anlegt). Das zweite Feld <my-id-field> ist eine ID einer Reihe von Tests oder Ergebnissen, von denen man nur das letzte Ergebnis haben will. Diese ID muss nicht zwangsläufig eine Zahl sein.

Advertisements
MySQL – das letzte