Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Nilai Berbeza daripada Lajur Khusus dalam SQL?

Bagaimana untuk Memilih Nilai Berbeza daripada Lajur Khusus dalam SQL?

DDD
DDDasal
2024-12-30 06:35:10328semak imbas

How to Select Distinct Values from Specific Columns in SQL?

Pemilihan DISTINCT untuk Lajur Tertentu

Walaupun kata kunci DISTINCT lazimnya menapis seluruh baris dengan sebarang pendua, mungkin terdapat keadaan yang anda memerlukan yang berbeza nilai hanya untuk lajur tertentu. Mari kita terokai cara untuk mencapai perkara ini dalam konteks pertanyaan yang mendapatkan semula data daripada jadual Produk.

Pertanyaan asal mendapatkan semula semua lajur daripada jadual Produk:

SELECT ID, Email, ProductName, ProductModel FROM Products

Objektifnya adalah untuk ubah suai pertanyaan untuk mengembalikan alamat E-mel yang unik, membenarkan pendua dalam lajur lain. Untuk mencapai matlamat ini, kami boleh menggunakan fungsi ROW_NUMBER() bersama partition tetingkap melalui E-mel.

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

Begini cara pertanyaan dipertingkat ini beroperasi:

  1. Fungsi ROW_NUMBER() memperuntukkan indeks baris unik, 'rn', dalam setiap partition E-mel dalam tertib menurun ID.
  2. Subkueri menjana jadual perantaraan dengan semua lajur daripada pertanyaan asal, bersama dengan indeks baris 'rn'.
  3. Pertanyaan luar kemudian menapis hasil subkueri untuk memasukkan baris sahaja di mana 'rn' adalah sama dengan 1, dengan berkesan mengembalikan baris terbaharu untuk setiap unik E-mel.

Akibatnya, pertanyaan yang diubah suai ini mendapatkan semula semua lajur daripada jadual Produk, memastikan tiada alamat E-mel pendua hadir.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Nilai Berbeza daripada Lajur Khusus 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