Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengalih keluar E-mel Pendua Semasa Menyimpan Pendua Lajur Lain dalam SQL?

Bagaimana untuk Mengalih keluar E-mel Pendua Semasa Menyimpan Pendua Lajur Lain dalam SQL?

Patricia Arquette
Patricia Arquetteasal
2025-01-02 16:32:39564semak imbas

How to Remove Duplicate Emails While Keeping Other Column Duplicates in SQL?

Menghapuskan Pendua E-mel dalam Pertanyaan SQL dengan DISTINCT

Dalam pertanyaan SQL yang disediakan, anda bertujuan untuk mengubah suainya untuk mengembalikan entri E-mel yang unik sambil membenarkan pendua dalam lajur lain. Memandangkan DISTINCT dan GROUP BY beroperasi pada keseluruhan baris, pendekatan berbeza diperlukan untuk mencapai matlamat ini.

Penyelesaian terletak pada menggabungkan subkueri yang memanfaatkan fungsi ROW_NUMBER() SQL Server. Dengan membahagikan set data berdasarkan E-mel dan menyusunnya dengan ID menurun menggunakan fungsi ROW_NUMBER(), kami boleh menetapkan kedudukan unik kepada setiap baris dalam setiap kumpulan E-mel.

Pertanyaan utama kemudian memilih semua baris di mana nilai kedudukan (rn) bersamaan dengan 1, memastikan bahawa hanya satu baris untuk setiap E-mel yang berbeza disertakan dalam keputusan.

Berikut ialah pertanyaan diubah suai:

SELECT *
FROM (
    SELECT ID, Email, ProductName, ProductModel,
        ROW_NUMBER() OVER(PARTITION BY Email ORDER BY ID DESC) rn
    FROM Products
) a
WHERE rn = 1

Pertanyaan ini secara berkesan menghapuskan E-mel pendua sambil mengekalkan pendua dalam lajur lain. Anda boleh memperhalusi pertanyaan lagi dengan menambahkan penapis bersyarat pada subkueri, seperti yang ditunjukkan dalam contoh ini:

SELECT *
FROM (
    SELECT ID, Email, ProductName, ProductModel,
        ROW_NUMBER() OVER(PARTITION BY Email ORDER BY ID DESC) rn
    FROM Products
    WHERE ProductModel = 2 AND ProductName LIKE 'CYBER%'
) a
WHERE rn = 1

Pertanyaan yang diubah suai ini mengehadkan keputusan kepada produk dengan ProductModel 2 dan nama yang bermula dengan 'CYBER% ', mengekalkan entri E-mel bukan pendua dalam kriteria ini.

Atas ialah kandungan terperinci Bagaimana untuk Mengalih keluar E-mel Pendua Semasa Menyimpan Pendua Lajur Lain 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