Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Cekap Mengambil Baris Unik dengan Nilai Tarikh Maksimum dalam SQL?

Bagaimana untuk Cekap Mengambil Baris Unik dengan Nilai Tarikh Maksimum dalam SQL?

Linda Hamilton
Lepaskan: 2025-01-25 18:36:14
asal
116 orang telah melayarinya

How to Efficiently Fetch Unique Rows with Maximum Date Values in SQL?

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>
Salin selepas log masuk

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>
Salin selepas log masuk
adalah kunci utama atau pengenal unik)

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan