Requête de la date maximale dans une instruction de jointure pour MySQL
Pour récupérer les emplacements historiques d'un enregistrement dans MySQL, vous pouvez utiliser une instruction JOIN . Cependant, lorsque vous rencontrez des problèmes de performances et des données en double dans les résultats, une approche modifiée est requise.
Requête modifiée
Pour récupérer uniquement la dernière heure de modification pour chaque ID d'enregistrement et l'emplacement, considérez la requête suivante :
SELECT t1.received_id , t1.transaction_id , t1.date_modified , l.location FROM transactions t1 JOIN ( SELECT received_id, MAX(date_modified) maxmodify FROM transactions GROUP BY received_id) max_record ON max_record.received_id = t1.received_id AND max_record.maxmodify = t1.date_modified JOIN locations l ON l.location_id = t1.location_id JOIN received r ON r.received_id = t1.received_id WHERE t1.received_id = '1782' ORDER BY t1.date_modified DESC
Modification de clé
La modification réside dans la sous-requête :
SELECT received_id, MAX(date_modified) maxmodify FROM transactions GROUP BY received_id
Cette sous-requête récupère la date maximale pour chaque ID_reçu.
Rejoindre sur Maximum
La requête principale rejoint ensuite sur cette sous-requête en utilisant deux conditions :
En vous inscrivant à la date maximale, vous éliminez les doublons résultats et capturez uniquement les changements d’emplacement les plus récents.
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!