Heim  >  Artikel  >  Datenbank  >  Wie kann ich mit ActiveRecord die letzte Besuchszeit für jeden einzelnen Benutzer in MySQL abrufen?

Wie kann ich mit ActiveRecord die letzte Besuchszeit für jeden einzelnen Benutzer in MySQL abrufen?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 06:23:03388Durchsuche

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

Verwendung von DISTINCT ON mit MySQL in ActiveRecord

Beim Umgang mit umfangreichen Daten ist es oft notwendig, bei der Durchführung von Datenbankoperationen eindeutige Informationen zu extrahieren. Ein solches Szenario ist die Identifizierung des letzten Besuchs jedes einzelnen Benutzers.

Frage:

Beim Versuch, die letzte Besuchszeit für jeden einzelnen Benutzer mithilfe von DISTINCT ON abzurufen In der Syntax ist ein ActiveRecord::StatementInvalid-Fehler aufgetreten. Die verwendete Abfrage war:

<code class="ruby">Event.order(time: :desc).select('DISTINCT ON(user_id) user_id, time')</code>

Lösung:

Die DISTINCT ON-Syntax ist spezifisch für PostgreSQL und gilt nicht für MySQL. Um das gewünschte Ergebnis in MySQL mit ActiveRecord zu erzielen, sollte die Abfrage geändert werden:

<code class="ruby">Events.group(:user_id).maximum(:time)</code>

Ausgabe:

Diese geänderte Abfrage erzeugt die erwartete Ausgabe, wobei die Schlüssel stellen eindeutige Benutzer-IDs dar und die Werte stellen die Zeit ihrer letzten Besuche dar:

{21=>Tue, 18 Dec 2018 11:15:24 UTC +00:00, 23=>Thu, 20 Dec 2018 06:42:10 UTC +00:00}

Das obige ist der detaillierte Inhalt vonWie kann ich mit ActiveRecord die letzte Besuchszeit für jeden einzelnen Benutzer in MySQL abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn