Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Dapatkan Semua Lajur dengan Nilai Berbeza dalam MySQL?
Mendapatkan semula nilai unik daripada jadual MySQL selalunya memberikan cabaran: pertanyaan standard mungkin hanya mengembalikan lajur yang dipilih secara eksplisit. Panduan ini menyediakan penyelesaian, daripada teknik asas hingga lanjutan, untuk mendapatkan semula semua lajur yang dikaitkan dengan nilai yang berbeza.
MySQL GROUP BY
menawarkan cara yang mudah tetapi berkesan untuk mencapainya. Ia mengumpulkan baris berdasarkan lajur yang ditentukan sambil mengekalkan semua lajur daripada baris terkumpul. Pertanyaan berikut menunjukkan pendekatan ini:
<code class="language-sql">SELECT * FROM your_table GROUP BY field1;</code>
Ini memastikan semua lajur dikembalikan, menjadikannya penyelesaian yang mudah.
MySQL DISTINCT ON
menyediakan pendekatan yang lebih bernuansa. Ia membolehkan anda menentukan lajur yang menentukan keunikan. Sintaksnya ialah:
<code class="language-sql">SELECT DISTINCT ON (field1) * FROM your_table;</code>
Walau bagaimanapun, perlu diingat bahawa DISTINCT ON
mungkin tidak disokong merentas semua versi atau platform MySQL.
Untuk senario yang lebih canggih, fungsi tetingkap (tersedia dalam beberapa versi MySQL lanjutan dan sistem pangkalan data lain seperti PostgreSQL dan Oracle) menawarkan penyelesaian yang berkuasa. Fungsi tetingkap melakukan pengiraan merentas set baris. Begini cara menggunakannya:
<code class="language-sql">SELECT * FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY field1 ORDER BY field2) as row_number FROM your_table ) AS ranked_rows WHERE row_number = 1;</code>
Ini menggunakan ROW_NUMBER()
untuk menetapkan kedudukan unik dalam setiap partition (ditakrifkan oleh field1
). Penapisan untuk row_number = 1
memilih baris pertama setiap kumpulan berbeza, sekali gus mengekalkan semua lajur.
Kaedah optimum bergantung pada versi dan keperluan MySQL khusus anda. Walaupun GROUP BY
menawarkan kesederhanaan, fungsi tetingkap memberikan fleksibiliti yang lebih besar untuk senario yang kompleks. Sentiasa uji pendekatan pilihan anda untuk memastikan ia menghasilkan hasil yang diingini dalam persekitaran anda.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Semua Lajur dengan Nilai Berbeza dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!