Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencari Baris Pendua Merentasi Berbilang Lajur dalam SQL?

Bagaimana untuk Mencari Baris Pendua Merentasi Berbilang Lajur dalam SQL?

Patricia Arquette
Patricia Arquetteasal
2025-01-03 16:14:39838semak imbas

How to Find Duplicate Rows Across Multiple Columns in SQL?

Mencari Pendua Merentasi Berbilang Lajur

Dalam SQL, anda boleh menghadapi situasi di mana anda perlu mengenal pasti baris dengan nilai pendua merentas berbilang lajur. Katakan anda mempunyai jadual yang dipanggil "bahan" yang mengandungi lajur seperti id, nama dan bandar. Anda ingin mencari baris dengan nilai yang sama dalam kedua-dua lajur nama dan bandar.

SQL Query

Untuk mencapai ini, anda boleh menggunakan SQL berikut pertanyaan:

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

Penjelasan

  • Pertanyaan utama (pilih s.id, t.*) memilih lajur id daripada jadual asal ([ barangan]) dan semua lajur daripada subkueri (t).
  • Subkueri (pilih nama, bandar, kiraan(*) sebagai qty) mengumpulkan jadual mengikut nama dan bandar dan mengira bilangan kejadian untuk setiap pasangan.
  • Bilangan yang mempunyai(*) > 1 klausa menapis subkueri untuk memasukkan hanya pasangan nama dan bandar dengan kiraan lebih daripada 1 (iaitu, pendua).
  • Syarat gabungan (pada s.name = t.name dan s.city = t.city) memautkan jadual asal ke subkueri berdasarkan nama dan bandar, memilih baris di mana gabungan muncul berbilang kali.

Output

Pertanyaan ini akan mengembalikan output berikut, menunjukkan pasangan id dan nama-bandar yang mempunyai pendua:

id      name  city   
904834  jim   London  
904835  jim   London  
90145   Fred  Paris   
90132   Fred  Paris
90133   Fred  Paris

Atas ialah kandungan terperinci Bagaimana untuk Mencari Baris Pendua Merentasi Berbilang Lajur dalam SQL?. 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