Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan Mesej Terkini daripada Setiap Pengguna dalam Pangkalan Data?

Bagaimana untuk Mendapatkan Mesej Terkini daripada Setiap Pengguna dalam Pangkalan Data?

Linda Hamilton
Lepaskan: 2025-01-04 04:51:42
asal
462 orang telah melayarinya

How to Retrieve the Most Recent Message from Each User in a Database?

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;
Salin selepas log masuk

Pertanyaan ini melaksanakan perkara berikut:

  1. Mengira cap masa terbaharu untuk setiap pengguna dalam subquery "(SELECT from_id, MAX(timestamp) cap waktu DARI mesej KUMPULAN OLEH from_id)".
  2. Sertai subkueri ini dengan jadual "mesej" asal menggunakan lajur "from_id" dan "cap masa".

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan