Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Dapatkan Hanya Alamat E-mel Unik daripada Pertanyaan SQL Berbilang Lajur?
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!