Sélection d'enregistrements distincts récents
Votre requête vise à récupérer les trois enregistrements les plus récents d'une table où les valeurs de la colonne otheridentifier sont distinctes . Cependant, l'approche actuelle utilisant GROUP BY et LIMIT donne des résultats inattendus.
Examinons le problème. L'opération GROUP BY combine les lignes avec le même autre identifiant. Étant donné que le classement s'effectue après le regroupement, l'enregistrement le plus récent de chaque groupe n'est pas nécessairement sélectionné.
Solution avec sous-requête
Pour résoudre ce problème, une sous-requête peut être utilisée pour identifier le enregistrement le plus récent pour chaque autre identifiant distinct. Ces informations sont ensuite utilisées dans la requête principale pour sélectionner les enregistrements souhaités.
La requête suivante y parvient :
SELECT * FROM `table` WHERE `id` = ( SELECT `id` FROM `table` as `alt` WHERE `alt`.`otheridentifier` = `table`.`otheridentifier` ORDER BY `time` DESC LIMIT 1 ) ORDER BY `time` DESC LIMIT 3
Explication :
En utilisant cette approche, le La requête renverra le résultat attendu : les identifiants 5, 4 et 2, représentant les trois enregistrements les plus récents avec d'autres valeurs d'identifiant distinctes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!