Mengenalpasti Rekod Pendua Merentasi Berbilang Lajur
Cabaran yang dikemukakan adalah untuk meniru fungsi kod SQL yang disediakan, yang bertujuan untuk mengenal pasti dan mendapatkan semula rekod pendua berdasarkan gabungan dua lajur, iaitu "nama" dan "bandar." Matlamatnya adalah untuk mengecualikan kes di mana hanya satu lajur, sama ada "nama" atau "bandar," sepadan dan hanya mempertimbangkan rekod yang kedua-dua lajur adalah sama.
Untuk menangani keperluan ini, jawapan yang disediakan memanfaatkan subkueri untuk dikira kejadian kedua-dua gabungan "nama" dan "bandar" dalam jadual "barangan". Subkueri ini mengira baris yang dikumpulkan mengikut kedua-dua "nama" dan "bandar" dan menapis kombinasi tersebut dengan kiraan lebih daripada 1, menunjukkan pendua.
select name, city, count(*) as qty from [stuff] group by name, city having count(*) > 1
Pertanyaan utama kemudiannya menyertai jadual "bahan" asal dengan hasil subquery, sepadan pada kedua-dua "nama" dan "bandar." Operasi gabungan ini berkesan mengenal pasti rekod pendua yang memenuhi kriteria yang ditentukan. Keputusan akhir menghapuskan positif palsu dengan mengecualikan kes di mana hanya satu lajur sepadan.
select s.id, t.* from [stuff] s join ( ... select name, city, count(*) as qty from [stuff] group by name, city having count(*) > 1 ) t on s.name = t.name and s.city = t.city
Akibatnya, pertanyaan berjaya mendapatkan semula output yang diingini:
id name city 904834 jim London 904835 jim London 90145 Fred Paris 90132 Fred Paris 90133 Fred Paris
Pendekatan ini menyediakan yang cekap dan penyelesaian serba boleh untuk mengenal pasti rekod pendua berdasarkan berbilang lajur, memastikan ketepatan dan kesempurnaan hasil pertanyaan.
Atas ialah kandungan terperinci Bagaimana Mengenalpasti Rekod Pendua Dengan Cekap Berdasarkan Berbilang Lajur dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!