Memilih 3 Baris Teratas daripada Berbilang Kategori dalam MySQL
Memilih baris teratas daripada setiap kategori dalam jadual boleh menjadi mencabar. Satu kaedah yang menggunakan paparan dan subkueri, seperti yang digariskan dalam percubaan awal, mungkin mengembalikan hasil yang salah.
Pendekatan yang lebih berkesan menggunakan fungsi analitik, yang tidak disokong oleh MySQL secara asli. Walau bagaimanapun, adalah mungkin untuk meniru fungsi ini menggunakan pembolehubah. Begini caranya:
<code class="sql">SELECT x.* FROM ( SELECT t.*, CASE WHEN @category != t.category THEN @rownum := 1 ELSE @rownum := @rownum + 1 END AS rank, @category := t.category AS var_category FROM TBL_ARTIKUJT t JOIN (SELECT @rownum := NULL, @category := '') r ORDER BY t.category ) x WHERE x.rank <= 3;</code>
Pertanyaan ini memulakan pembolehubah @rownum dan @category menggunakan operasi JOIN. Ia kemudian memberikan kedudukan kepada setiap baris berdasarkan kategorinya, menambah kedudukan jika kategori berubah.
Akhir sekali, pertanyaan memilih hanya baris dengan kedudukan 3 atau kurang. Ambil perhatian bahawa anda mungkin perlu mengubah suai klausa SELECT x.* untuk memasukkan hanya lajur yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Memilih 3 Baris Teratas daripada Setiap Kategori dalam MySQL Tanpa Fungsi Analitik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!