Maison > Article > base de données > Comment obtenir les dernières visites de tous les utilisateurs uniques dans MySQL ActiveRecord ?
Comment utiliser l'équivalent de DISTINCT ON dans MySQL ActiveRecord
L'exigence est de récupérer les dernières visites de tous les utilisateurs distincts à partir des événements tableau. L'utilisation de la clause DISTINCT ON(user_id) avec MySQL dans ActiveRecord entraîne une erreur de syntaxe.
L'équivalent MySQL de DISTINCT ON consiste à utiliser GROUP BY avec la fonction MAX() :
<code class="ruby">Events.group(:user_id).maximum(:time)</code>
Cette requête regroupera les résultats par user_id et renverra la valeur maximale de la colonne time pour chaque groupe. La sortie sera un hachage avec l'id_utilisateur comme clé et l'heure de la dernière visite comme valeur :
{ 21 => "2018-12-18 09:44:59", 42 => "2018-12-19 12:08:59" }
Remarque : DISTINCT ON(columns) est une syntaxe spécifique à PostgreSQL. MySQL ne prend pas directement en charge cette syntaxe.
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!