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 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!