Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Nombor Baris untuk Nilai Berbeza dalam SQL Menggunakan DENSE_RANK()?

Bagaimana untuk Mendapatkan Nombor Baris untuk Nilai Berbeza dalam SQL Menggunakan DENSE_RANK()?

Patricia Arquette
Patricia Arquetteasal
2024-12-29 03:08:09201semak imbas

How to Get Row Numbers for Distinct Values in SQL Using DENSE_RANK()?

Membezakan Baris dengan Nilai Berbeza Menggunakan Row_Number dalam SQL

Kata kunci DISTINCT dalam SQL memainkan peranan penting dalam menghapuskan baris pendua apabila mendapatkan data. Walau bagaimanapun, ia mungkin tidak mencukupi apabila anda perlu mengenal pasti kejadian unik setiap nilai dalam lajur. Di sinilah Row_Number berperanan, tetapi gabungannya dengan DISTINCT boleh menjadi rumit.

Pertanyaan yang dimaksudkan cuba memaparkan nombor baris untuk nilai yang berbeza dalam lajur id:

SELECT DISTINCT id, ROW_NUMBER() OVER (ORDER BY id) AS RowNum
FROM table
WHERE fid = 64;

Walau bagaimanapun , pertanyaan ini menghasilkan nilai id yang berbeza, bukan nombor baris untuk setiap nilai unik. Untuk mencapai hasil yang diingini, anda boleh menggunakan fungsi DENSE_RANK() dan bukannya DISTINCT:

SELECT DISTINCT id, DENSE_RANK() OVER (ORDER BY id) AS RowNum
FROM table
WHERE fid = 64;

DENSE_RANK() memberikan nombor baris berjujukan kepada nilai yang berbeza, tidak seperti ROW_NUMBER() yang memberikan jurang kepada nilai pendua. Dengan menggabungkan DENSE_RANK() dengan DISTINCT, anda boleh mendapatkan semula nombor baris untuk setiap nilai id unik, memberikan maklumat yang diperlukan untuk analisis atau pemprosesan selanjutnya.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nombor Baris untuk Nilai Berbeza dalam SQL Menggunakan DENSE_RANK()?. 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