Bagaimana untuk Memilih 3 Baris Teratas daripada Setiap Kategori dalam MySQL Tanpa Fungsi Analitik?

Patricia Arquette
Lepaskan: 2024-10-27 23:23:30
asal
544 orang telah melayarinya

How to Select the Top 3 Rows from Each Category in MySQL Without Analytic Functions?

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!