Memahami Kata Kunci DISTINCT dan Fungsi ROW_NUMBER()
Apabila bekerja dengan data dalam SQL, selalunya menjadi perlu untuk mendapatkan hanya baris unik daripada sebuah meja. Kata kunci DISTINCT biasanya digunakan untuk tujuan ini, kerana ia menghapuskan baris pendua daripada set hasil. Walau bagaimanapun, apabila digabungkan dengan fungsi ROW_NUMBER(), kata kunci DISTINCT mungkin berkelakuan berbeza.
ROW_NUMBER() Fungsi dan Nilai Distinct
Fungsi ROW_NUMBER() menetapkan nombor jujukan unik untuk setiap baris dalam jadual. Secara lalai, baris disusun mengikut kedudukannya dalam jadual. Walau bagaimanapun, anda boleh menentukan susunan pengisihan yang berbeza menggunakan klausa ORDER BY.
Dalam pertanyaan yang disediakan, fungsi ROW_NUMBER() digunakan bersama kata kunci DISTINCT:
SELECT DISTINCT id, ROW_NUMBER() OVER (ORDER BY id) AS RowNum FROM table WHERE fid = 64
Pertanyaan ini bertujuan untuk memaparkan semua nombor baris nilai unik dalam lajur id. Walau bagaimanapun, ia hanya mengembalikan nilai yang berbeza tanpa menunjukkan nombor baris.
Penyelesaian Menggunakan Fungsi DENSE_RANK()
Untuk mencapai hasil yang diingini, anda boleh menggunakan DENSE_RANK() ) dan bukannya ROW_NUMBER(). Fungsi DENSE_RANK() memberikan nombor jujukan unik kepada setiap nilai berbeza dalam jadual, tanpa mengira susunan baris.
Pertanyaan yang dibetulkan menggunakan DENSE_RANK():
SELECT DISTINCT id, DENSE_RANK() OVER (ORDER BY id) AS RowNum FROM table WHERE fid = 64
Pertanyaan ini akan mengembalikan nilai yang berbeza dalam lajur id bersama-sama nombor baris yang sepadan, memenuhi keperluan asal.
Atas ialah kandungan terperinci Bagaimanakah DISTINCT Berinteraksi dengan ROW_NUMBER() dan Bagaimana Saya Boleh Mendapatkan Nombor Baris Unik dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!