Heim >Datenbank >MySQL-Tutorial >Wie kann ich mithilfe der GROUP BY-Klausel von MySQL die aktuelle Anwesenheit jedes Benutzers abrufen?
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!