Maison >base de données >tutoriel mysql >Comment récupérer efficacement la dernière ligne pour un identifiant donné en fonction des horodatages ?
Récupération de la dernière ligne pour un ID spécifié
Dans une table contenant plusieurs lignes avec le même ID, comment pouvez-vous extraire efficacement uniquement les ligne la plus récente basée sur les horodatages ? Prenons l'exemple de tableau :
| id | signin | signout | +----+---------------------+---------+ | 1 | 2011-12-12 09:27:24 | NULL | | 1 | 2011-12-13 09:27:31 | NULL | | 1 | 2011-12-14 09:27:34 | NULL | | 2 | 2011-12-14 09:28:21 | NULL | +----+---------------------+---------+
Pour y parvenir, vous pouvez utiliser des fonctions d'agrégation et des sous-requêtes.
Utilisation d'Aggregate MAX()
Le La fonction agrégée MAX() peut être utilisée pour déterminer le dernier horodatage de connexion pour chaque ID. En regroupant les résultats par colonne d'identifiant, vous pouvez identifier l'horodatage de connexion maximal pour chaque identifiant unique.
SELECT id, MAX(signin) AS most_recent_signin FROM tbl GROUP BY id
Récupération de la ligne complète
Pour récupérer l'intégralité ligne correspondant à la connexion la plus récente pour un ID spécifique, utilisez un INNER JOIN sur une sous-requête qui renvoie l'horodatage de connexion maximum par ID.
SELECT tbl.id, signin, signout FROM tbl INNER JOIN ( SELECT id, MAX(signin) AS maxsign FROM tbl GROUP BY id ) ms ON tbl.id = ms.id AND signin = maxsign WHERE tbl.id=1
Cette requête renverra l'enregistrement complet le plus récent avec>
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!