Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Rekod Terkini daripada Setiap Kumpulan Menggunakan Klausa SQL GROUP BY?

Bagaimana untuk Mendapatkan Rekod Terkini daripada Setiap Kumpulan Menggunakan Klausa SQL GROUP BY?

Barbara Streisand
Barbara Streisandasal
2025-01-02 18:23:39402semak imbas

How to Retrieve the Latest Record from Each Group Using SQL's GROUP BY Clause?

Mengambil semula Rekod Terkini daripada Kumpulan menggunakan GROUP BY

Dalam SQL, klausa GROUP BY biasanya digunakan untuk mengumpulkan dan mengagregatkan data daripada jadual . Walau bagaimanapun, dalam senario tertentu, anda mungkin menghadapi keperluan untuk mendapatkan rekod terkini daripada setiap kumpulan dan bukannya yang paling lama.

Pertimbangkan contoh berikut:

SELECT * FROM messages GROUP BY from_id

Walaupun pertanyaan ini bertujuan untuk mengumpulkan rekod berdasarkan lajur from_id, ia memilih mesej tertua daripada setiap kumpulan kerana ia tidak mempunyai kriteria susunan cap masa. Untuk mendapatkan semula mesej terbaharu, kami perlu mengubah suai pertanyaan seperti berikut:

SELECT t1.*
FROM messages t1
JOIN (
    SELECT from_id, MAX(timestamp) AS latest_timestamp
    FROM messages
    GROUP BY from_id
) t2 ON t1.from_id = t2.from_id AND t1.timestamp = t2.latest_timestamp

Dalam pertanyaan yang dioptimumkan ini, kami menggunakan subkueri untuk mengenal pasti nilai cap masa terkini dalam setiap kumpulan. Subquery mengira nilai cap masa maksimum untuk setiap from_id dan menyimpannya sebagai latest_timestamp.

Pertanyaan utama kemudiannya bergabung dengan jadual asal (mesej) dengan jadual subquery, memadankan rekod berdasarkan from_id. Selain itu, ia memastikan bahawa cap masa dalam jadual asal (t1.timestamp) sepadan dengan cap masa terkini untuk setiap kumpulan (t2.latest_timestamp).

Pertanyaan yang diperhalusi ini akan mendapatkan semula mesej terkini daripada setiap pengguna dengan berkesan, memberikan anda dengan hasil yang diingini.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod Terkini daripada Setiap Kumpulan Menggunakan Klausa SQL GROUP BY?. 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