Mendapatkan semula Rekod Terbaru Setiap Kumpulan dengan GROUP BY
Dalam konteks ini, anda mempunyai jadual bernama "message" dengan lajur " id", "from_id", "to_id", "subject", "message", dan "timestamp". Matlamat anda adalah untuk mengekstrak mesej terbaharu daripada setiap pengguna, serupa dengan paparan dalam peti masuk Facebook.
Pertanyaan yang diberikan, "PILIH * DARI mesej KUMPULAN OLEH from_id", sebaliknya menghasilkan mesej tertua untuk setiap pengguna yang terkini. Untuk membetulkannya, pendekatan alternatif diperlukan.
Untuk mendapatkan mesej terbaharu, anda perlu menentukan cap masa maksimum untuk setiap pengguna dan sertai maklumat ini dengan jadual "mesej". Pertanyaan di bawah mencapai ini:
SELECT t1.* FROM messages t1 JOIN (SELECT from_id, MAX(timestamp) timestamp FROM messages GROUP BY from_id) t2 ON t1.from_id = t2.from_id AND t1.timestamp = t2.timestamp;
Pertanyaan ini melaksanakan perkara berikut:
Hasilnya ialah jadual yang mengandungi hanya mesej terbaharu untuk setiap pengguna, menyediakan kefungsian yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Mesej Terkini daripada Setiap Pengguna dalam Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!