Heim  >  Artikel  >  Datenbank  >  Wie kann ich mithilfe der GROUP BY-Klausel von MySQL die aktuelle Anwesenheit jedes Benutzers abrufen?

Wie kann ich mithilfe der GROUP BY-Klausel von MySQL die aktuelle Anwesenheit jedes Benutzers abrufen?

DDD
DDDOriginal
2024-10-28 05:15:30136Durchsuche

How to Retrieve the Latest Attendance for Each User Using MySQL's GROUP BY Clause?

Auswählen des neuesten Werts mithilfe von Group By in MySQL

Beim Versuch, die neueste Anwesenheit für jeden Benutzer mithilfe der GROUP BY-Klausel von MySQL abzurufen, Es kann vorkommen, dass die anfängliche Anwesenheit anstelle des gewünschten letzten Werts zurückgegeben wird.

Verwenden einer Unterabfrage

Eine Lösung besteht darin, eine Unterabfrage zu verwenden, um den maximalen Zeitstempel zu ermitteln für jedes Mitglied und verknüpfen Sie diese Unterabfrage mit der Haupttabelle:

<code class="sql">SELECT *
FROM view_event_attendance AS t1
WHERE id_event = 782
AND timestamp = (SELECT MAX(timestamp)
                  FROM view_event_attendance AS t2 
                  WHERE t1.id_member = t2.id_member 
                    AND t1.id_event = t2.id_event 
                  GROUP BY id_event, id_member)
GROUP BY id_event, id_member;</code>

Verwendung von Verkettung und MAX()

Ein alternativer Ansatz besteht darin, die Zeitstempel- und Anwesenheitswerte zu verketten und Verwenden Sie dann MAX(), um die kombinierten Werte auszuwählen:

<code class="sql">SELECT substring(max(concat(from_unixtime(timestamp),attendance)) from 20) as attendance
FROM view_event_attendance
WHERE id_event = 782
GROUP BY id_event,id_member;</code>

Diese Methode gibt nur den neuesten Anwesenheitswert für jedes Mitglied zurück.

Auswählen des verketteten Zeitstempels/der verketteten Anwesenheit

Wenn Sie lieber die verketteten Zeitstempel- und Anwesenheitswerte abrufen möchten, können Sie die folgende Abfrage verwenden:

<code class="sql">SELECT concat(from_unixtime(timestamp),attendance), timestamp, attendance
FROM view_event_attendance
WHERE id_event = 782
GROUP BY id_event,id_member;</code>

Leistungsüberlegungen

Beim Umgang Bei großen Datensätzen können Unterabfragen rechenintensiv sein. Durch die Verkettung von Werten und die Verwendung von MAX() kann eine bessere Leistung erzielt werden. Es ist jedoch wichtig, die spezifischen Anforderungen und Datenbankeigenschaften zu bewerten, um die optimale Lösung für Ihren Anwendungsfall zu ermitteln.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe der GROUP BY-Klausel von MySQL die aktuelle Anwesenheit jedes Benutzers 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