So finden Sie den neuesten Besuch für eindeutige Benutzer in MySQL mit ActiveRecord
Beim Versuch, die DISTINCT ON-Funktion mit zu verwenden, ist ein Syntaxfehler aufgetreten MySQL in ActiveRecord? Hier ist eine Lösung:
Die erste Abfrage:
Event.order(time: :desc).select('DISTINCT ON(user_id) user_id, time')
gibt einen Fehler zurück, da DISTINCT ON von MySQL nicht unterstützt wird. Stattdessen können Sie eine Kombination aus GROUP BY und MAX verwenden, um das gewünschte Ergebnis zu erzielen.
Geänderte Abfrage:
Events.group(:user_id).maximum(:time)
Diese Abfrage gruppiert die Ereignisse nach Benutzer-ID und ermittelt die maximale Zeit dafür jede Gruppe, wodurch Sie effektiv den neuesten Besuch für jeden einzelnen Benutzer erhalten.
Erwartete Ausgabe:
{ 21 => "2018-12-18 09:44:59", 42 => "2018-12-19 12:08:59"}
Beachten Sie, dass das Zeitstempelformat je nach Datenbankkonfiguration variieren kann .
Das obige ist der detaillierte Inhalt vonWie finde ich mit ActiveRecord den neuesten Besuch für jeden Benutzer in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!