Comment trouver la dernière visite de tous les utilisateurs distincts dans Rails avec MySQL
Vous souhaitez récupérer la dernière heure de visite pour chaque utilisateur distinct dans votre base de données. Vous essayez d'utiliser la fonction DISTINCT ON dans votre requête ActiveRecord, mais vous rencontrez une erreur de syntaxe SQL.
La fonction DISTINCT ON est spécifique à PostgreSQL et MySQL ne la prend pas en charge. Au lieu de cela, vous pouvez obtenir le résultat souhaité à l'aide des fonctions GROUP BY et MAX.
Modifiez votre requête comme suit :
<code class="ruby">Event.group(:user_id).maximum(:time)</code>
Cette requête regroupera les événements par user_id et renverra le maximum valeur temporelle pour chaque groupe. Cela vous donnera la dernière heure de visite pour chaque utilisateur unique.
Sortie :
La sortie résultante sera un hachage, où les clés sont les identifiants utilisateur et les valeurs. sont les dernières heures de visite en tant qu'objets Time :
<code class="ruby">{ 21 => Tue, 18 Dec 2018 11:15:24 UTC +00:00, 23 => Thu, 20 Dec 2018 06:42:10 UTC +00:00 }</code>
Notez que vous pouvez utiliser strftime pour formater les valeurs de temps à votre guise.
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!