Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih 3 Rekod Terbaharu Terbaharu daripada Jadual?

Bagaimana untuk Memilih 3 Rekod Terbaharu Terbaharu daripada Jadual?

Linda Hamilton
Linda Hamiltonasal
2024-12-01 04:59:09719semak imbas

How to Select the 3 Most Recent Distinct Records from a Table?

Memilih Rekod Terbaharu Terbaharu

Pertanyaan anda bertujuan untuk mendapatkan semula tiga rekod terbaharu daripada jadual di mana nilai dalam lajur pengecam lain adalah berbeza . Walau bagaimanapun, pendekatan semasa menggunakan GROUP BY dan LIMIT membuahkan hasil yang tidak dijangka.

Mari kita periksa masalahnya. Operasi GROUP BY menggabungkan baris dengan pengecam lain yang sama. Memandangkan pesanan berlaku selepas pengumpulan, rekod terkini setiap kumpulan tidak semestinya dipilih.

Penyelesaian dengan Subkueri

Untuk menangani isu ini, subkueri boleh digunakan untuk mengenal pasti rekod terkini untuk setiap pengecam lain yang berbeza. Maklumat ini kemudiannya digunakan dalam pertanyaan utama untuk memilih rekod yang dikehendaki.

Pertanyaan berikut mencapai ini:

SELECT *
FROM `table`
WHERE `id` = (
    SELECT `id`
    FROM `table` as `alt`
    WHERE `alt`.`otheridentifier` = `table`.`otheridentifier`
    ORDER BY `time` DESC
    LIMIT 1
)
ORDER BY `time` DESC
LIMIT 3

Penjelasan:

  • Subkueri memperoleh id rekod terkini untuk setiap pengecam unik yang lain.
  • Yang utama pertanyaan kemudian menggunakan id ini untuk mendapatkan semula rekod yang sepadan daripada jadual asal.
  • Rekod disusun mengikut masa menurun, dan tiga yang terbaharu dihadkan oleh LIMIT 3.

Menggunakan pendekatan ini, pertanyaan akan mengembalikan hasil yang dijangkakan: id 5, 4 dan 2, mewakili tiga rekod terbaharu dengan pengecam lain yang berbeza nilai.

Atas ialah kandungan terperinci Bagaimana untuk Memilih 3 Rekod Terbaharu Terbaharu daripada Jadual?. 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