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
Lepaskan: 2025-01-02 18:23:39
asal
391 orang telah melayarinya

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

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

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!

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