Dans ma requête SQL, je sélectionne des données avec les clauses GROUP BY et ORDER BY . La table a la même numbers
sur plusieurs lignes avec des heures différentes dans chaque ligne. Je pense donc que je veux appliquer une clause GROUP BY .
Cependant, dans les résultats, renvoient l'heure la plus ancienne avec le nombre, mais j'ai besoin de l'heure la plus récente.
SELECT * FROM TABLE GROUP BY (numbers) ORDER BY time DESC
La requête apparaît comme si elle devait d’abord appliquer GROUP BY puis ORDER BY ... mais les résultats ne semblent pas fonctionner de cette façon.
Est-ce qu'il y a un moyen de réparer ceci?
la solution consiste à réécrire la requête en tant que:
SELECT * FROM (SELECT * FROM table ORDER BY time DESC) AS t GROUP BY numbers;
SELECT *
FROM table t
WHERE time = (
SELECT max(time)
FROM table
WHERE t.numbers = numbers
)
SELECT * FROM table
WHERE time IN (
SELECT MAX(time)
FROM table
GROUP BY numbers
)
Selon le manuel, vous pouvez ajouter une liste à la liste des groupes: Exemple:
groupe par item1, item2 desc, item3
avec ou sans rollup.
J'ai essayé cela et cela fonctionne dans Ubuntu version 5.5.58. La page de référence est la suivante: https://dev.mysql.com/doc/refman/5.7/fr/group-by-modifiers.html