Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mencari Rekod Pendua Merentasi Pelbagai Medan dalam SQL?
Mengenal pasti Entri Pendua Menggunakan Pelbagai Medan dalam SQL
Walaupun kaedah sedia ada wujud untuk mencari entri pendua dalam satu lajur, mengenal pasti pendua merentas berbilang medan memerlukan pendekatan yang sedikit berbeza. Mari kita pertimbangkan senario mencari rekod pendua berdasarkan padanan alamat e-mel dan nama.
Penyelesaian melibatkan pengubahsuaian pertanyaan SQL standard:
<code class="language-sql">SELECT name, email, COUNT(*) AS DuplicateCount FROM users GROUP BY name, email HAVING DuplicateCount > 1</code>
Dengan mengumpulkan hasil menggunakan name
dan email
, kami mencipta pengecam unik untuk setiap gabungan nama-e-mel yang berbeza. Fungsi COUNT(*)
kemudiannya mengagregatkan bilangan kejadian untuk setiap pengecam unik. Fasal HAVING
menapis hasil agregat ini, hanya mengembalikan gabungan yang muncul lebih daripada sekali, dengan berkesan menentukan rekod pendua.
Teknik ini bergantung pada prinsip kebergantungan fungsi, di mana nilai satu medan ditentukan oleh nilai medan lain yang ditentukan. Ini membenarkan pengumpulan mengikut medan yang tidak terlibat secara langsung dalam fungsi agregat.
Nota Penting: Keserasian sistem pangkalan data adalah penting. Walaupun pertanyaan ini berfungsi dengan betul dalam pangkalan data seperti PostgreSQL dan MySQL, SQL Server mungkin memerlukan secara eksplisit memasukkan semua lajur tidak terkumpul dalam klausa GROUP BY
. Oracle dan sistem pangkalan data lain mungkin juga mempunyai keperluan unik. Sentiasa rujuk dokumentasi sistem pangkalan data anda untuk memastikan keserasian dan pelaksanaan yang betul.
Atas ialah kandungan terperinci Bagaimana untuk Mencari Rekod Pendua Merentasi Pelbagai Medan dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!