Maison >base de données >tutoriel mysql >Comment récupérer efficacement la dernière ligne pour un identifiant donné en fonction des horodatages ?

Comment récupérer efficacement la dernière ligne pour un identifiant donné en fonction des horodatages ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-01 10:37:16535parcourir

How to Efficiently Retrieve the Latest Row for a Given ID Based on Timestamps?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn