Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Dua Artikel Teratas daripada Setiap Kategori dalam MySQL?
MySQL Query: Memilih Dua Artikel Teratas daripada Setiap Kategori
Dalam MySQL, mengekstrak bilangan baris tertentu daripada jadual selalunya dicapai menggunakan klausa LIMIT. Walau bagaimanapun, apabila keperluan adalah untuk memilih berbilang baris berdasarkan pengumpulan, pendekatan yang berbeza diperlukan. Artikel ini menangani senario tertentu di mana dua baris akan dipilih daripada setiap kategori dalam jadual.
Pada asalnya, pengguna cuba mencapai ini dengan mencipta pandangan untuk mengehadkan baris dan seterusnya menggunakan subkueri untuk mendapatkan semula yang diingini rekod. Walau bagaimanapun, pendekatan ini menyebabkan hanya dua jumlah rekod dikembalikan.
Penyelesaian terletak pada penggunaan apa yang biasanya dirujuk sebagai fungsi windowing. MySQL tidak menyokong fungsi windowing secara asli, tetapi mungkin untuk meniru fungsinya menggunakan pembolehubah yang ditentukan pengguna seperti berikut:
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;
Dalam pertanyaan yang disemak ini:
Pendekatan ini secara berkesan mencontohi fungsi tetingkap untuk mengumpulkan dan memilih baris yang dikehendaki daripada setiap kategori. Jika niatnya adalah untuk mendapatkan semula lajur asal sahaja, pertanyaan luar boleh diubah suai untuk menentukan nama lajur tertentu dan bukannya x.*.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Dua Artikel Teratas daripada Setiap Kategori dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!