Maison > base de données > tutoriel mysql > Comment récupérer efficacement le dernier enregistrement d'activité utilisateur avec SQL ?

Comment récupérer efficacement le dernier enregistrement d'activité utilisateur avec SQL ?

Patricia Arquette
Libérer: 2025-01-15 16:51:45
original
239 Les gens l'ont consulté

How to Efficiently Retrieve the Latest User Activity Record with SQL?

Utilisez SQL pour obtenir efficacement les derniers enregistrements d'activité des utilisateurs

Cet article explique comment interroger la base de données via SQL pour obtenir la dernière date d'enregistrement d'activité de chaque utilisateur.

Supposons que nous ayons une table de base de données qui enregistre les événements de connexion des utilisateurs :

用户名 日期 数值
brad 2010-01-02 1.1
fred 2010-01-03 1.0
bob 2009-08-04 1.5
brad 2010-02-02 1.2
fred 2009-12-02 1.3

Méthode facile :

Une approche simple consiste à utiliser une jointure interne pour faire correspondre les noms d'utilisateur et les dernières dates :

<code class="language-sql">select t.username, t.date, t.value
from MyTable t
inner join (
    select username, max(date) as MaxDate
    from MyTable
    group by username
) tm on t.username = tm.username and t.date = tm.MaxDate</code>
Copier après la connexion

Cependant, cette approche peut souffrir de doublons d'enregistrements portant la même date.

Utiliser les fonctions de fenêtre :

Afin de résoudre le problème des enregistrements en double, vous pouvez utiliser les fonctions de fenêtre :

<code class="language-sql">select x.username, x.date, x.value 
from (
    select username, date, value,
        row_number() over (partition by username order by date desc) as _rn
    from MyTable 
) x
where x._rn = 1</code>
Copier après la connexion

Cette requête utilise le partitionnement des lignes et la fonction ROW_NUMBER() pour attribuer un classement à chaque enregistrement pour chaque utilisateur, le classement le plus élevé indiquant le dernier enregistrement. La clause WHERE garantit que seuls les enregistrements de rang 1, représentant l'activité la plus récente de chaque utilisateur, sont sélectionnés.

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!

source:php.cn
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