Maison >base de données >tutoriel mysql >Comment sélectionner les données de capteur les plus récentes en fonction des horodatages ?
Sélection de valeurs récentes en fonction des clés d'horodatage
Votre approche initiale utilisant GROUP BY et max() était correcte en principe, mais la syntaxe SQL nécessite d'inclure des colonnes non agrégées dans la clause GROUP BY ou de les utiliser dans une fonction d'agrégation.
La solution correcte inclut la sélection de l'horodatage maximum pour chaque capteur, puis en l'utilisant dans une sous-requête pour récupérer les données du capteur correspondantes :
SELECT sensorID, MAX(timestamp) AS latest_timestamp, sensorField1, sensorField2 FROM sensorTable GROUP BY sensorID
Cette requête récupère l'horodatage maximum pour chaque capteur. Vous pouvez ensuite utiliser cette sous-requête dans une requête imbriquée pour récupérer tous les capteurs avec cet horodatage :
SELECT * FROM sensorTable WHERE timestamp = ( SELECT MAX(timestamp) FROM sensorTable WHERE sensorID = sensorTable.sensorID )
Cette deuxième requête génère une seule ligne pour chaque capteur, avec l'horodatage le plus récent et les données de capteur associées.
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!