satu -satunya baris dengan nilai maksimum dalam jadual SQL dengan pengekstrakan yang efisien
Jadual SQL sering memasukkan pelbagai baris dengan nilai lajur yang sama. Apabila diambil data dari jadual jenis ini, adalah penting untuk mengekstrak satu -satunya garis dengan maklumat terkini atau nilai maksimum lajur tertentu. Ini amat berguna dalam kemas kini data yang berterusan.
Anggapkan bahawa jadual yang dipanggil "myTable" termasuk "userid", "nilai" dan "tarikh". Untuk mendapatkan semula "UserID" dan "nilai" yang sepadan dengan setiap nilai "UserID" yang unik, kami boleh menggunakan teknologi SQL yang cekap tanpa bergantung pada sub -query.
Dalam pertanyaan ini, kami menggunakan sambungan luaran kiri antara kedua -dua keadaan (T1 dan T2) daripada "MyTable". Keadaan sambungan memastikan garis -garis yang sepadan dengan nilai "tarikh" besar dalam T1. Seterusnya, klausa WHERE menapis semua baris dengan garis sepadan dengan nilai "tarikh" yang lebih besar dalam T2, hanya meninggalkan baris yang sepadan dengan nilai "tarikh" terbesar setiap "userID" yang unik.
<code class="language-sql">SELECT t1.* FROM mytable t1 LEFT OUTER JOIN mytable t2 ON (t1.UserId = t2.UserId AND t1."Date" < t2."Date") WHERE t2.UserId IS NULL;</code>
Cara lain untuk mempertimbangkan pelbagai baris dengan tarikh maksimum yang sama ialah:
Dalam varian ini, kami menggunakan lebih banyak syarat sambungan yang baik untuk memproses potensi duplikasi dengan nilai "tarikh" maksimum yang sama. Dengan memperkenalkan keadaan tambahan (t1.id & lt; t2.id), kita dapat memastikan bahawa hanya garis unik dengan ID minimum. (Dengan asumsi
<code class="language-sql">SELECT t1.* FROM mytable t1 LEFT OUTER JOIN mytable t2 ON t1.UserId = t2.UserId AND ((t1."Date" < t2."Date") OR (t1."Date" = t2."Date" AND t1.id < t2.id)) WHERE t2.UserId IS NULL;</code>
id
Melalui kaedah ini, kita dapat mengekstrak baris unik dengan nilai maksimum dari jadual SQL, mengelakkan pertanyaan sub kompleks, dan meningkatkan kecekapan pertanyaan.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Mengambil Baris Unik dengan Nilai Tarikh Maksimum dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!