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!