Récupération de la ligne la plus récente pour un ID donné
Dans une situation où une table de base de données contient plusieurs lignes pour le même ID, elle peut il sera nécessaire d’extraire uniquement le plus récent. Cet article explique comment y parvenir en SQL.
En utilisant la table fournie comme exemple :
+----+---------------------+---------+ | 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 | +----+---------------------+---------+
Agrégat MAX (signin) regroupé par ID
Pour obtenir l'heure de connexion la plus récente pour chaque ID, regroupez les lignes par ID et agrégez-les avec MAX(signin). Cela fournira une liste d'identifiants avec leurs dernières heures de connexion correspondantes.
Requête SQL :
SELECT id, MAX(signin) AS most_recent_signin FROM tbl GROUP BY id
INNER JOIN contre une sous-requête
Pour récupérer l'intégralité de la ligne la plus récente pour un ID spécifique (par exemple, ID=1), utilisez un INNER JOIN par rapport à une sous-requête qui calcule le MAX(signin) par ID. Ensuite, filtrez les résultats en fonction de l'ID souhaité.
Requête SQL :
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
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!