webentwicklung-frage-antwort-db.com.de

MySQL - mit GROUP BY und DESC

In meiner SQL-Abfrage wähle ich Daten mit GROUP BY und ORDER BY -Klauseln aus. Die Tabelle enthält dieselbe numbers in mehreren Zeilen mit unterschiedlichen Zeiten in jeder Zeile. Ich denke also, ich möchte eine GROUP BY - Klausel anwenden.

Allerdings in den Ergebnissen die älteste Zeit mit der Nummer zurück, aber ich brauche die aktuellste Zeit.

SELECT * FROM TABLE GROUP BY (numbers) ORDER BY time DESC

Die Abfrage sieht so aus, als ob sie zuerst GROUP BY und dann ORDER BY ... anwenden sollte, aber die Ergebnisse scheinen nicht so zu funktionieren.

Gibt es eine Möglichkeit, dies zu beheben?

11
user1946705

abhilfe besteht darin, die Abfrage neu zu schreiben als:

SELECT * FROM (SELECT * FROM table ORDER BY time DESC) AS t GROUP BY numbers;
14
jbrond
SELECT * 
FROM table t
WHERE time = (
    SELECT max(time)
    FROM table
    WHERE t.numbers = numbers
)
17
Karolis
SELECT * FROM table
    WHERE time IN (
        SELECT MAX(time)
            FROM table
            GROUP BY numbers
    )
1
B. Bohdan

Entsprechend dem Handbuch können Sie desc der Gruppe nach Liste hinzufügen: Beispiel:
Gruppieren nach Item1, Item2 Desc, Item3

mit oder ohne Rollup.

Ich habe dies versucht und es funktioniert in Ubuntu Version 5.5.58. Die Referenzseite lautet: https://dev.mysql.com/doc/refman/5.7/en/group-by-modifiers.html

0
Betty Mock