Problem:
In einer Tabelle mit mehreren Anwesenheitszeilen Beim Erstellen von Daten für Benutzer besteht das Ziel darin, nur den letzten Anwesenheitswert für jeden Benutzer zu erhalten, gruppiert nach Benutzer-ID. Die Verwendung von GROUP BY mit Bestellklauseln liefert jedoch nicht das gewünschte Ergebnis.
Um nur den letzten Anwesenheitswert auszuwählen, verwenden Sie den folgenden Ansatz:
<code class="sql">SELECT id_member, MAX(timestamp) AS last_timestamp, attendance FROM view_event_attendance WHERE id_event = 782 GROUP BY id_member ORDER BY last_timestamp DESC;</code>
<code class="sql">SELECT id_branch_channel, id_member, attendance, timestamp, id_member FROM view_event_attendance WHERE (id_member, last_timestamp) IN ( SELECT id_member, MAX(timestamp) AS last_timestamp FROM view_event_attendance WHERE id_event = 782 GROUP BY id_member ORDER BY last_timestamp DESC );</code>
<code class="sql">SELECT id_branch_channel, id_member, attendance, timestamp, id_member FROM view_event_attendance AS t1 WHERE timestamp = (SELECT MAX(timestamp) FROM view_event_attendance AS t2 WHERE t1.id_member = t2.id_member AND t1.id_event = t2.id_event);</code>
Hinweis: Diese Lösung vermeidet die Verwendung von GROUP BY mit ORDER BY-Klauseln, was bei großen Tabellen ineffizient sein kann.
Das obige ist der detaillierte Inhalt vonWie wähle ich mit MySQL nur den letzten Wert in einer gruppierten Tabelle aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!