Récupération efficace des trois enregistrements les plus récents par groupe d'utilisateurs dans Access SQL
La gestion des bases de données implique souvent la récupération de sous-ensembles de données spécifiques. Dans des scénarios tels que le suivi des résultats des tests, vous devrez peut-être extraire les trois entrées les plus récentes pour chaque utilisateur individuel. Cette tâche, bien qu'apparemment simple, nécessite une requête SQL sophistiquée pour combiner la sélection des enregistrements récents avec le regroupement des données par utilisateur.
La requête SQL suivante fournit une solution :
SELECT PR1.LogInID, PR1.Score, PR1.[Date Taken] FROM Progress AS PR1 WHERE PR1.[Date Taken] IN ( SELECT TOP 3 PR2.[Date Taken] FROM Progress PR2 WHERE PR2.LoginID = PR1.LoginID ORDER BY PR2.[Date Taken] DESC ) ORDER BY LoginID, [Date Taken] DESC;
Répartition des requêtes :
Cette requête utilise une sous-requête (requête interne) dans la requête principale (requête externe) pour obtenir le résultat souhaité.
Sous-requête : Cette requête imbriquée identifie les trois valeurs « Date de prise » les plus récentes pour chaque LoginID
unique. Il le fait par :
[Date Taken]
.Progress
(PR2
) pour inclure uniquement les enregistrements correspondant au LoginID
de la requête externe (PR1.LoginID
).[Date Taken]
pour garantir que les dates les plus récentes sont prioritaires.Requête principale : La requête principale filtre ensuite la table Progress
(PR1
) à l'aide de l'opérateur IN
. Cet opérateur garantit que seuls les enregistrements dont la valeur [Date Taken]
est présente dans le jeu de résultats de la sous-requête (c'est-à-dire les trois dates les plus récentes pour cet utilisateur) sont inclus. Enfin, les résultats sont classés par LoginID
puis par [Date Taken]
(décroissant) pour une lisibilité aisée.
Cette approche récupère efficacement les trois scores les plus récents pour chaque utilisateur, gérant ainsi efficacement les égalités potentielles dans le champ [Date Taken]
. L'utilisation combinée de sous-requêtes et de l'opérateur IN
fournit une solution concise et puissante à ce défi commun aux bases de données.
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!