Maison > base de données > tutoriel mysql > Comment récupérer l'heure de visite la plus récente pour chaque utilisateur unique dans MySQL avec ActiveRecord ?

Comment récupérer l'heure de visite la plus récente pour chaque utilisateur unique dans MySQL avec ActiveRecord ?

Susan Sarandon
Libérer: 2024-10-30 06:23:03
original
452 Les gens l'ont consulté

How to Retrieve the Most Recent Visit Time for Each Unique User in MySQL with ActiveRecord?

Utilisation de DISTINCT ON avec MySQL dans ActiveRecord

Lorsque vous traitez des données volumineuses, il est souvent nécessaire d'extraire des informations uniques lors de l'exécution d'opérations de base de données. L'un de ces scénarios consiste à identifier la dernière visite de chaque utilisateur distinct.

Question :

En essayant de récupérer l'heure de visite la plus récente pour chaque utilisateur unique à l'aide de DISTINCT ON syntaxe, une erreur ActiveRecord::StatementInvalid est rencontrée. La requête utilisée était :

<code class="ruby">Event.order(time: :desc).select('DISTINCT ON(user_id) user_id, time')</code>
Copier après la connexion

Solution :

La syntaxe DISTINCT ON est spécifique à PostgreSQL et ne s'applique pas à MySQL. Pour obtenir le résultat souhaité dans MySQL à l'aide d'ActiveRecord, la requête doit être modifiée :

<code class="ruby">Events.group(:user_id).maximum(:time)</code>
Copier après la connexion

Sortie :

Cette requête modifiée produira la sortie attendue, où le les clés représentent des identifiants d'utilisateur uniques et les valeurs représentent l'heure de leurs visites les plus récentes :

{21=>Tue, 18 Dec 2018 11:15:24 UTC +00:00, 23=>Thu, 20 Dec 2018 06:42:10 UTC +00:00}
Copier après la connexion

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