Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mendapatkan Rekod Terkini dengan Cekap untuk Setiap Kumpulan dalam Pangkalan Data?

Bagaimanakah Saya Boleh Mendapatkan Rekod Terkini dengan Cekap untuk Setiap Kumpulan dalam Pangkalan Data?

Mary-Kate Olsen
Lepaskan: 2024-12-31 04:52:10
asal
935 orang telah melayarinya

How Can I Efficiently Retrieve the Latest Record for Each Group in a Database?

Menentukan Rekod Terkini Dalam Kumpulan melalui KUMPULAN OLEH

Dalam senario pangkalan data yang melibatkan berbilang rekod dengan kriteria pengelompokan yang serupa, tugas biasa adalah untuk mendapatkan semula rekod terkini bagi setiap kumpulan. Ini ditunjukkan dalam platform pemesejan, di mana mesej terbaharu daripada setiap pengguna dikehendaki.

Percubaan dan Kelemahan Awal

Pendekatan awal melibatkan penggunaan klausa GROUP BY untuk agregat rekod ke dalam kumpulan yang berbeza, seperti yang dilihat dalam pertanyaan:

SELECT * FROM messages GROUP BY from_id
Salin selepas log masuk

Walau bagaimanapun, pertanyaan ini mendapatkan semula mesej tertua dalam setiap kumpulan dan bukannya yang terbaharu.

Penyelesaian Pertanyaan

Kepada mendapatkan rekod terkini bagi setiap kumpulan, pendekatan yang lebih canggih diperlukan. Ini melibatkan:

  1. Subquery: Tentukan nilai cap masa terkini dalam setiap kumpulan menggunakan subquery berikut:

    SELECT from_id, MAX(timestamp) timestamp FROM messages GROUP BY from_id
    Salin selepas log masuk
  2. Sertai subquery: Sertai jadual mesej asal dengan subkueri, sepadan dengan from_id dan lajur cap masa di mana ia sepadan.

    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 menghasilkan mesej terkini untuk setiap from_id yang berbeza dalam jadual mesej, menangani kebimbangan awal.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Rekod Terkini dengan Cekap untuk Setiap Kumpulan 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