Heim  >  Artikel  >  Datenbank  >  Wie finde ich mit ActiveRecord den neuesten Besuch für jeden Benutzer in MySQL?

Wie finde ich mit ActiveRecord den neuesten Besuch für jeden Benutzer in MySQL?

Original
2024-10-30 01:36:28833Durchsuche

How to Find the Latest Visit for Each User in MySQL with ActiveRecord?

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!

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