Petua SQL: Tapis baris dengan cekap sepadan dengan nilai maksimum lajur
Dalam pangkalan data MySQL, selalunya perlu untuk mengekstrak baris yang sepadan dengan nilai maksimum lajur tertentu daripada kumpulan rekod. Artikel ini menerangkan dua kaedah utama.
Kaedah 1: Subkueri dan sambungan
Kaedah ini menggunakan subkueri untuk menentukan nilai maksimum dalam setiap kumpulan. Subkueri mengumpulkan baris mengikut pengecam kumpulan dan mengembalikan nilai maksimum lajur yang ditentukan. Kemudian, gabungkan keputusan dengan jadual utama menggunakan pengecam kumpulan dan nilai maksimum sebagai syarat gabungan.
Contoh:
<code class="language-sql">SELECT a.id, a.rev, a.contents FROM YourTable a INNER JOIN ( SELECT id, MAX(rev) rev FROM YourTable GROUP BY id ) b ON a.id = b.id AND a.rev = b.rev</code>
Kaedah 2: Sambungan diri dan penapisan
Cara lain ialah dengan menyertai jadual utama dengan sendiri menggunakan gabungan luar kiri. Syarat cantum digunakan pada pengecam kumpulan dan syarat tambahan ditambahkan untuk membandingkan nilai di sebelah kiri dan kanan cantuman. Penapis memastikan bahawa hanya baris tanpa baris yang sepadan di sebelah kanan (iaitu baris dengan nilai terbesar) disertakan dalam hasil carian.
Contoh:
<code class="language-sql">SELECT a.* FROM YourTable a LEFT OUTER JOIN YourTable b ON a.id = b.id AND a.rev < b.rev WHERE b.id IS NULL;</code>
Ringkasan
Kedua-dua kaedah memberikan hasil yang sama dan mematuhi piawaian ANSI SQL. Mereka juga agak mesra prestasi, tetapi prestasi sebenar akan berbeza-beza bergantung pada sistem pangkalan data, reka bentuk skema dan kehadiran indeks. Adalah disyorkan untuk menanda aras kedua-dua pendekatan untuk menentukan penyelesaian terbaik untuk senario tertentu.
Atas ialah kandungan terperinci Bagaimana cara memilih baris dengan nilai maksimum dalam lajur menggunakan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!