Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL erhält die letzten Datumseinträge von mehreren

Sie können Verwenden Sie GROUP BY , aber es ist wichtig zu verstehen, wie es funktioniert.

Wenn Sie GROUP BY verwenden eine Gruppe von Zeilen wird zu einer zusammengefasst und was in den anderen Spalten angezeigt wird, die nicht in Ihrem GROUP BY verwendet werden -Klausel, wird entweder durch die Verwendung von Aggregatfunktionen bestimmt oder es handelt sich um eine zufällige Zeile aus dieser Gruppe. Sie können nicht sicher sein, dass Sie die Zeile erhalten, die der Zeile entspricht, die mit MAX() angezeigt wird value oder welche Aggregatfunktion Sie auch immer verwendet haben. Dies wird besonders deutlich, wenn Sie eine Abfrage wie die folgende durchführen:

SELECT id, MIN(whatever), MAX(whatever), another_column
FROM your_table
GROUP BY id

Die "another_column" kann zu der Zeile gehören, die den MIN()-Wert oder den MAX()-Wert enthält, oder sogar zu einer anderen Zeile, die überhaupt nicht angezeigt wird. In anderen RDBMS als MySQL ist es eigentlich verboten, Spalten auszuwählen, die keine Aggregatfunktion verwenden oder nicht in GROUP BY aufgeführt sind Klausel, nur um zu verhindern, dass Benutzer einen Fehler machen oder denken, dass sie das richtige Ergebnis erhalten haben.

In Ihrem Fall scheinen Sie also auch die Spalte "Wert" anzeigen zu wollen. Aus den oben genannten Gründen ist die Antwort von juergen_d falsch, da "Wert" nicht ausgewählt wird, und wenn dies der Fall wäre, können Sie nicht sicher sein, dass es sich um den richtigen "Wert" handelt. Die Antwort von Filipe Silva ist falsch, weil sie nach "Wert" gruppiert. Wenn Sie dies tun, wird in Ihrem Fall tatsächlich die gesamte Tabelle zurückgegeben. Romeshs Antwort ist falsch, da zweimal MAX() verwendet wird -Funktion erhalten Sie die maximalen Werte, natürlich aber nicht den Wert, der dem datetime-Wert entspricht.

Also, wie musst du es machen? Hier werden 3 Möglichkeiten beschrieben . Lernen Sie sie, indem Sie sie selbst anwenden. Es ist nicht so schwer :)