Lors de la gestion des données sur plusieurs entrées, il est souvent nécessaire d'identifier et de récupérer l'enregistrement contenant l'horodatage le plus récent pour une clé donnée. Bien qu'une approche simple puisse impliquer un regroupement par clé et un classement par horodatage maximum, cela peut entraîner des erreurs liées aux champs n'apparaissant pas dans la clause group by.
Pour surmonter ce problème, une structure de requête alternative propose une solution viable :
SELECT sensorID, timestamp, sensorField1, sensorField2 FROM sensorTable s1 WHERE timestamp = ( SELECT MAX(timestamp) FROM sensorTable s2 WHERE s1.sensorID = s2.sensorID ) ORDER BY sensorID, timestamp;
Cette requête fait essentiellement correspondre chaque ligne de sensorTable s1 avec son homologue horodaté le plus récent dans sensorTable s2. La clause WHERE filtre efficacement toutes les lignes à l'exception de celles avec l'horodatage maximum pour chaque clé, garantissant ainsi que les données sélectionnées sont les plus à jour. En regroupant les résultats par sensorID et en triant par horodatage, la requête renvoie une seule ligne avec le dernier horodatage pour chaque clé, ainsi que les champs supplémentaires souhaités.
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!