Maison  >  Article  >  base de données  >  Comment trouver la dernière visite de chaque utilisateur dans MySQL avec ActiveRecord ?

Comment trouver la dernière visite de chaque utilisateur dans MySQL avec ActiveRecord ?

original
2024-10-30 01:36:28832parcourir

How to Find the Latest Visit for Each User in MySQL with ActiveRecord?

Comment trouver la dernière visite d'utilisateurs distincts dans MySQL avec ActiveRecord

Rencontre d'une erreur de syntaxe lors de la tentative d'utilisation de la fonction DISTINCT ON avec MySQL dans ActiveRecord ? Voici une solution :

La requête initiale :

Event.order(time: :desc).select('DISTINCT ON(user_id) user_id, time')

renvoie une erreur car DISTINCT ON n'est pas pris en charge par MySQL. Au lieu de cela, vous pouvez utiliser une combinaison de GROUP BY et MAX pour obtenir le résultat souhaité.

Requête modifiée :

Events.group(:user_id).maximum(:time)

Cette requête regroupera les événements par user_id et trouvera la durée maximale pour chaque groupe, vous donnant ainsi la dernière visite pour chaque utilisateur distinct.

Résultat attendu :

{ 21 => "2018-12-18 09:44:59", 42 => "2018-12-19 12:08:59"}

Notez que le format d'horodatage peut varier en fonction de la configuration de votre base 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:
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