Mencari Rekod Pendua Menggunakan Pelbagai Medan dalam SQL
Mengenal pasti entri pendua berdasarkan satu lajur ialah tugas SQL yang mudah. Contohnya, untuk mencari e-mel pendua dalam jadual users
:
<code class="language-sql">SELECT email, COUNT(email) FROM users GROUP BY email HAVING COUNT(email) > 1;</code>
Kerumitan bertambah apabila mengenal pasti pendua merentas berbilang medan, seperti e-mel dan nama.
Untuk menentukan baris dengan gabungan e-mel dan nama yang sama, gunakan pertanyaan ini:
<code class="language-sql">SELECT name, email, COUNT(*) FROM users GROUP BY name, email HAVING COUNT(*) > 1;</code>
Ini mengumpulkan data mengikut kedua-dua name
dan email
, kemudian menapis untuk menunjukkan hanya kumpulan yang mempunyai lebih daripada satu entri, sekali gus mendedahkan pendua.
Cara ia Berfungsi:
Klausa HAVING
adalah penting; ia menapis hasil terkumpul, memastikan hanya gabungan name
dan email
yang muncul lebih daripada sekali dikembalikan. Keluaran biasa akan menyerupai:
<code>| name | email | COUNT(*) | |------|-------------|----------| | Tom | john@example.com | 2 | | Tom | tom@example.com | 2 |</code>
Pertimbangan Penting:
Sistem pangkalan data berbeza dalam pengendalian pengelompokan lajur bukan teragregat. Sesetengah mungkin memerlukan kemasukan eksplisit dalam klausa GROUP BY
. Jika sistem pangkalan data anda tidak menyokong kumpulan tersirat ini, anda perlu melaraskan pertanyaan dengan sewajarnya.
Atas ialah kandungan terperinci Bagaimana untuk Mencari Baris Pendua Berdasarkan Pelbagai Medan dalam Jadual SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!