Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Cari Baris Pendua Merentasi Berbilang Lajur dalam Jadual SQL?
Cari nilai pendua dalam berbilang lajur dalam jadual SQL
Pendekatan standard menggunakan klausa GROUP BY
berkesan mengenal pasti nilai pendua dalam satu lajur. Tetapi bagaimana jika anda perlu mencari pendua dalam berbilang lajur, seperti nama dan e-mel?
Untuk menyelesaikan masalah ini, hanya lanjutkan klausa GROUP BY
untuk memasukkan semua lajur yang berkaitan:
<code class="language-sql">SELECT name, email, COUNT(*) FROM users GROUP BY name, email HAVING COUNT(*) > 1</code>
Dengan mengumpulkan mengikut nama dan e-mel, pertanyaan ini akan mengenal pasti pendua dengan berkesan untuk kedua-dua gabungan lajur ini.
Nota: Sistem pangkalan data yang berbeza mungkin mempunyai sokongan yang berbeza untuk sintaks ini. Sesetengah versi pangkalan data SQL yang lebih lama memerlukan semua lajur tidak teragregat untuk disertakan dalam klausa GROUP BY
. Walau bagaimanapun, enjin pangkalan data moden seperti PostgreSQL dan MySQL sering menyokong pengelompokan pada lajur tidak teragregat.
Ingat bahawa peraturan pergantungan berfungsi terpakai, bermakna lajur yang digunakan untuk mengumpulkan harus mempunyai hubungan yang kuat antara satu sama lain. Sekiranya hubungan itu lemah, anda mungkin mendapat hasil yang tidak dijangka.
Untuk memastikan gelagat yang konsisten merentas sistem pangkalan data yang berbeza, adalah disyorkan untuk memasukkan semua lajur bukan agregat dalam klausa GROUP BY
atau merujuk dokumentasi untuk pangkalan data khusus anda untuk butiran pelaksanaan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Cari Baris Pendua Merentasi Berbilang Lajur dalam Jadual SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!