Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan `pid` Terkini dengan Cekap untuk Setiap `rid` Unik Menggunakan `MAX()` MySQL dan `GROUP BY`?

Bagaimana untuk Mendapatkan `pid` Terkini dengan Cekap untuk Setiap `rid` Unik Menggunakan `MAX()` MySQL dan `GROUP BY`?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-01 00:16:09261semak imbas

How to Efficiently Retrieve the Latest `pid` for Each Unique `rid` Using MySQL's `MAX()` and `GROUP BY`?

Pengoptimuman Pertanyaan MySQL: MAX() dan GROUP BY

Masalah:

Diberikan jadual dengan lajur pid, cap waktu , kos dan menghapuskan, tugasnya adalah untuk mendapatkan semula pid baris terkini untuk setiap unik rid, memandangkan pid ialah kunci utama autokenaikan.

Pertanyaan Asal:

Pertanyaan berikut mendapatkan cap masa maksimum dan nilai penyingkiran yang sepadan, tetapi ia tidak mengembalikan yang terkini dengan betul pid:

SELECT MAX(timestamp), rid, pid FROM theTable GROUP BY rid

Penyelesaian:

Untuk mendapatkan pid terkini secara berkesan bagi setiap rid, gabungan teknik diperlukan:

  1. Kenal pasti cap masa maksimum dan penyingkiran yang sepadan nilai:

    SELECT rid, MAX(timestamp) AS maxt FROM theTable GROUP BY rid
  2. Sertai jadual asal berbanding hasil cap masa maksimum:

    SELECT
        t.pid,
        t.cost,
        t.timestamp,
        t.rid
    FROM
        theTable AS t
    JOIN
        (SELECT rid, MAX(timestamp) AS maxt FROM theTable GROUP BY rid) AS maxt
    ON
        t.rid = maxt.rid AND t.timestamp = maxt.maxt

Pertanyaan yang disemak ini berkesan mendapatkan semula pid, kos, cap masa dan menyingkirkan baris terkini untuk setiap unik buang dalam jadual asal.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan `pid` Terkini dengan Cekap untuk Setiap `rid` Unik Menggunakan `MAX()` MySQL dan `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