Sélection de la date la plus récente dans une déclaration jointe : dépannage pour la récupération des données d'emplacement historique
Cette requête vise à récupérer les emplacements historiques d'un enregistrement et leurs dates correspondantes. Cependant, l'implémentation actuelle prend un temps d'exécution excessivement long et produit des enregistrements en double. Le résultat attendu est une liste simplifiée d'enregistrements avec leurs emplacements les plus récents.
La requête d'origine tente de trouver la date la plus récente associée à chaque identifiant d'enregistrement en exécutant une opération d'auto-jointure. Cependant, cette approche est inefficace et peut entraîner des problèmes de performances, en particulier pour les ensembles de données plus volumineux.
Corriger la requête
Pour optimiser la requête, nous pouvons utiliser la version corrigée 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
Explication
Dans cette requête, nous introduisons une expression de table commune (CTE) pour trouver la date maximale pour chaque identifiant d'enregistrement dans la table des transactions. Le CTE est :
SELECT received_id, MAX(date_modified) AS maxmodify FROM transactions GROUP BY received_id
On joint ensuite la table des transactions d'origine (t1) avec ce CTE (max_record) sur le champ reçu_id. De plus, nous filtrons sur la colonne maxmodify pour garantir que seules les transactions portant la date la plus récente sont incluses. Cela optimise la requête en évitant les jointures et les doublons inutiles.
Avec cette requête optimisée, nous pouvons obtenir efficacement les emplacements historiques de chaque enregistrement, garantissant ainsi que nous récupérons uniquement l'emplacement le plus récent pour chaque identifiant d'enregistrement unique.
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!