Bagaimana untuk Mendapatkan 5 Item Teratas dari Setiap Kategori dalam MySQL Sambil Mengelakkan Ralat 'Subquery Returns More than 1 Row'?

Linda Hamilton
Lepaskan: 2024-11-10 09:13:03
asal
480 orang telah melayarinya

How to Retrieve the Top 5 Items from Each Category in MySQL While Avoiding the

Mendapatkan semula 5 Item Teratas daripada Setiap Kategori dalam MySQL

Menghadapi ralat "Subquery mengembalikan lebih daripada 1 baris" semasa cuba mengambil lima item menu teratas untuk setiap kategori menu? Penyelesaiannya terletak dalam menggunakan pembolehubah kesan sampingan.

Mari kita pecahkan pendekatan yang disemak:

Dalam subkueri, kami memperkenalkan pembolehubah kesan sampingan @r dan @g menggunakan notasi @ SQL. Pembolehubah ini digunakan untuk menjejaki keahlian kumpulan dan meningkatkan kedudukan dalam setiap kumpulan.

  1. @g:=null - Memulakan @g kepada NULL, menunjukkan bahawa kami memulakan kumpulan baharu.
  2. @r:=0 - Memulakan @r kepada 0, menandakan permulaan kedudukan baharu.
  3. Klausa WHERE dalam subkueri (di mana m.menuid = s.menuid) memastikan bahawa s dan m adalah dijajarkan berdasarkan ID menu.
  4. @r:=case when @g=m.profilename kemudian @r 1 else 1 end - Ungkapan case ini bertambah @r sebanyak 1 jika m.profilename adalah sama dengan semasa kumpulan (@g). Jika tidak, ia menetapkan semula @r kepada 1, menandakan permulaan kumpulan baharu.
  5. @g:=m.profilename - Kemas kini @g dengan nama profil kumpulan semasa, membolehkan kami menjejaki baris berikutnya milik ini kumpulan.
  6. Pertanyaan utama mendapatkan semula nama profil dan nama daripada jadual subkueri alias X.
  7. Syarat WHERE r <= 5 terakhir menapis hanya 5 item kedudukan teratas dalam setiap kumpulan.

Dengan melaksanakan pendekatan ini, anda boleh memperoleh hasil yang diingini dengan cekap tanpa ralat "Subquery returns more than 1 row".

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan 5 Item Teratas dari Setiap Kategori dalam MySQL Sambil Mengelakkan Ralat 'Subquery Returns More than 1 Row'?. 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