Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengambil PID Baris Terkini untuk Setiap RID Unik dalam MySQL?
Pertimbangkan senario di mana anda mempunyai jadual MySQL dengan lajur seperti cap waktu, kos, rid, dsb. . Objektif anda adalah untuk mendapatkan semula pid baris terkini untuk setiap penyingkiran unik.
Anda mencuba ini menggunakan pertanyaan berikut:
SELECT MAX(timestamp),rid,pid FROM theTable GROUP BY rid
Walau bagaimanapun, nilai pid yang dikembalikan tidak sejajar dengan cap masa maksimum. Ini kerana GROUP BY mempertimbangkan semua lajur dalam klausa SELECT, dan ia memilih baris padanan pertama untuk setiap kumpulan.
Untuk membetulkannya, kita perlu mengenal pasti penyingkiran dan cap masa maksimum bagi setiap kumpulan. Kita boleh melakukan ini menggunakan subquery:
SELECT rid, MAX(timestamp) AS ts FROM theTable GROUP BY rid
Hasil pertanyaan ini akan kelihatan seperti ini:
rid | ts -----|----- 1 | 2011-04-14 01:06:06 2 | 2011-04-14 01:05:41 3 | 2011-04-14 01:14:14
Sekarang, kita boleh menyertai jadual asal dengan subquery ini, menggunakan rid dan cap masa, untuk mendapatkan semula nilai pid yang dikehendaki:
SELECT theTable.pid, theTable.cost, theTable.timestamp, theTable.rid FROM theTable INNER JOIN ( SELECT rid, MAX(timestamp) AS ts FROM theTable GROUP BY rid ) AS maxt ON (theTable.rid = maxt.rid AND theTable.timestamp = maxt.ts)
Hasil pertanyaan ini akan memberikan anda pid, kos, cap masa dan buang baris terbaharu untuk setiap penghapusan unik.
Atas ialah kandungan terperinci Bagaimana untuk Mengambil PID Baris Terkini untuk Setiap RID Unik dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!