Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mendapatkan 5 Item Teratas dari Setiap Kategori dalam MySQL Sambil Mengelakkan Ralat 'Subquery Returns More than 1 Row'?

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
586 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!

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