Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Mendapatkan Kehadiran Terkini untuk Setiap Pengguna Menggunakan Klausa GROUP BY MySQL?

Bagaimana untuk Mendapatkan Kehadiran Terkini untuk Setiap Pengguna Menggunakan Klausa GROUP BY MySQL?

DDD
DDDasal
2024-10-28 05:15:30136semak imbas

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

Memilih Nilai Terkini Menggunakan Kumpulan By dalam MySQL

Apabila cuba mendapatkan kehadiran terkini untuk setiap pengguna menggunakan klausa GROUP BY MySQL, anda mungkin menghadapi keadaan di mana kehadiran awal dikembalikan dan bukannya nilai terkini yang dikehendaki.

Menggunakan Subkueri

Satu penyelesaian ialah menggunakan subkueri untuk mengenal pasti cap masa maksimum untuk setiap ahli dan sertai subquery ini dengan jadual utama:

<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>

Menggunakan Concatenation dan MAX()

Pendekatan alternatif melibatkan penggabungan cap masa dan nilai kehadiran dan kemudian gunakan MAX() untuk memilih nilai gabungan:

<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>

Kaedah ini hanya mengembalikan nilai kehadiran terkini untuk setiap ahli.

Memilih Cap Masa/Kehadiran Bercantum

Jika anda memilih untuk mendapatkan cap masa yang digabungkan dan nilai kehadiran, anda boleh menggunakan pertanyaan berikut:

<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>

Pertimbangan Prestasi

Apabila berurusan dengan set data yang besar, subkueri boleh menjadi mahal dari segi pengiraan. Menggabungkan nilai dan menggunakan MAX() boleh memberikan prestasi yang lebih baik. Walau bagaimanapun, adalah penting untuk menilai keperluan khusus dan ciri pangkalan data untuk menentukan penyelesaian optimum untuk kes penggunaan anda.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kehadiran Terkini untuk Setiap Pengguna Menggunakan Klausa GROUP BY MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn