Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Dapatkan Hanya Alamat E-mel Unik daripada Pertanyaan SQL Berbilang Lajur?

Bagaimanakah Saya Boleh Dapatkan Hanya Alamat E-mel Unik daripada Pertanyaan SQL Berbilang Lajur?

Barbara Streisand
Barbara Streisandasal
2024-12-28 11:37:20789semak imbas

How Can I Retrieve Only Unique Email Addresses from a Multi-Column SQL Query?

CIRI untuk Lajur Tertentu

Memberi pertanyaan yang mendapatkan semula berbilang lajur, seperti ID, E-mel, ProductName dan ProductModel daripada Produk jadual, bagaimanakah ia boleh diubah suai untuk memaparkan nilai E-mel yang unik sahaja?

Untuk menangani perkara ini, SQL Pelayan 2005 dan versi yang lebih baru menawarkan penyelesaian:

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 menggunakan fungsi ROW_NUMBER() untuk menetapkan nombor baris pada setiap baris dalam setiap partition E-mel, yang disusun mengikut tertib menurun ID. Lajur rn kemudiannya mengenal pasti baris mana yang harus disertakan dalam hasil akhir, kerana hanya baris dengan rn bersamaan dengan 1 akan dipilih.

Untuk memperhalusi pertanyaan lagi, klausa WHERE boleh ditambah untuk menapis baris berdasarkan pada kriteria tertentu. Contohnya, untuk memasukkan hanya baris dengan ProductModel tertentu dan ProductNamenya mengandungi subrentetan tertentu:

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

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Hanya Alamat E-mel Unik daripada Pertanyaan SQL Berbilang Lajur?. 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