Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencari Baris Pendua dalam Jadual SQL Berdasarkan Berbilang Lajur (cth., E-mel dan Nama)?

Bagaimana untuk Mencari Baris Pendua dalam Jadual SQL Berdasarkan Berbilang Lajur (cth., E-mel dan Nama)?

Susan Sarandon
Susan Sarandonasal
2025-01-23 02:04:111014semak imbas

How to Find Duplicate Rows in a SQL Table Based on Multiple Columns (e.g., Email and Name)?

Mengenal pasti Rekod Pendua dalam SQL Menggunakan Berbilang Lajur

Artikel ini menangani cabaran mengesan baris pendua dalam jadual SQL, khususnya apabila pendua ditakrifkan dengan memadankan nilai merentas berbilang lajur (cth., e-mel dan nama). Walaupun pertanyaan mudah boleh mengenal pasti pendua berdasarkan satu lajur, penyelesaian ini memanjangkan fungsi tersebut.

Penyelesaian:

Pertanyaan SQL berikut dengan cekap mengenal pasti rekod pendua berdasarkan kedua-dua medan email dan name:

<code class="language-sql">SELECT
    name, email, COUNT(*) AS DuplicateCount
FROM
    users
GROUP BY
    name, email
HAVING 
    DuplicateCount > 1</code>

Pertanyaan ini mengumpulkan baris berdasarkan gabungan unik name dan email. Fungsi COUNT(*) mengira kejadian setiap gabungan, dan klausa HAVING menapis keputusan untuk menunjukkan hanya gabungan tersebut muncul lebih daripada sekali – menunjukkan rekod pendua. Fasal AS DuplicateCount menyediakan nama lajur yang lebih deskriptif untuk kejelasan.

Konsep Teras:

Penyelesaian menggunakan konsep pangkalan data kebergantungan fungsi. Dalam konteks ini, name dan email bersama-sama membentuk kebergantungan berfungsi; name tertentu secara unik sepadan dengan email tertentu, dan begitu juga sebaliknya (dengan mengandaikan tiada dua individu berkongsi nama dan e-mel yang sama). Pengumpulan mengikut kedua-dua medan memastikan pengecaman pendua yang tepat.

Pertimbangan Praktikal:

Walaupun secara konsepnya mudah, sesetengah sistem pangkalan data SQL mungkin memerlukan tetapan konfigurasi khusus untuk membenarkan pengumpulan pada lajur tidak teragregat (seperti name dan email di sini). Sebagai contoh, tetapan sql_mode=only_full_group_by MySQL mungkin memerlukan pelarasan untuk mendayakan jenis pertanyaan ini. Rujuk dokumentasi sistem pangkalan data anda untuk sebarang keperluan konfigurasi yang berkaitan.

Atas ialah kandungan terperinci Bagaimana untuk Mencari Baris Pendua dalam Jadual SQL Berdasarkan Berbilang Lajur (cth., E-mel dan Nama)?. 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