Masalah:
Dalam jadual yang mengandungi berbilang baris kehadiran data untuk pengguna, matlamatnya adalah untuk mendapatkan hanya nilai kehadiran terakhir bagi setiap pengguna, dikumpulkan mengikut ID pengguna. Walau bagaimanapun, menggunakan GROUP BY dengan klausa pesanan tidak mengembalikan hasil yang diingini.
Untuk memilih hanya nilai kehadiran terakhir, gunakan pendekatan berikut:
<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>
Nota: Penyelesaian ini mengelakkan penggunaan GROUP BY dengan klausa ORDER BY, yang boleh menjadi tidak cekap untuk meja besar.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Hanya Nilai Terakhir dalam Jadual Berkumpulan Menggunakan MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!