Maison > base de données > tutoriel mysql > Comment récupérer les 3 principaux enregistrements récents par groupe d'utilisateurs dans Access SQL ?

Comment récupérer les 3 principaux enregistrements récents par groupe d'utilisateurs dans Access SQL ?

Susan Sarandon
Libérer: 2025-01-07 17:36:38
original
557 Les gens l'ont consulté

How to Retrieve the Top 3 Recent Records per User Group in Access SQL?

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;
Copier après la connexion

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 :

    • Sélection des trois premières valeurs [Date Taken].
    • Filtrer la table Progress (PR2) pour inclure uniquement les enregistrements correspondant au LoginID de la requête externe (PR1.LoginID).
    • Classer les résultats par ordre décroissant par [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!

Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal