Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie rufe ich die Top 5 Elemente aus jeder Kategorie in MySQL ab und vermeide dabei den Fehler „Unterabfrage gibt mehr als 1 Zeile zurück'?

Linda Hamilton
Freigeben: 2024-11-10 09:13:03
Original
480 Leute haben es durchsucht

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

Abrufen der Top 5 Elemente aus jeder Kategorie in MySQL

Beim Versuch, die abzurufen, tritt der Fehler „Unterabfrage gibt mehr als 1 Zeile zurück“ auf Top fünf Menüpunkte für jede Menükategorie? Die Lösung liegt in der Verwendung von Variablen mit Nebeneffekten.

Lassen Sie uns den überarbeiteten Ansatz aufschlüsseln:

In der Unterabfrage führen wir die Variablen @r und @g mit Nebeneffekten unter Verwendung der @-Notation von SQL ein. Diese Variablen werden verwendet, um die Gruppenmitgliedschaft zu verfolgen und den Rang innerhalb jeder Gruppe zu erhöhen.

  1. @g:=null – Initialisiert @g auf NULL, was anzeigt, dass wir eine neue Gruppe starten.
  2. @r:=0 – Initialisiert @r auf 0, was den Beginn eines neuen Rangs anzeigt.
  3. Die WHERE-Klausel in der Unterabfrage (wobei m.menuid = s.menuid) stellt sicher, dass s und m gleich sind basierend auf der Menü-ID ausgerichtet.
  4. @r:=case when @g=m.profilename then @r 1 else 1 end – Dieser Fallausdruck erhöht @r um 1, wenn m.profilename mit dem aktuellen identisch ist Gruppe (@g). Andernfalls wird @r auf 1 zurückgesetzt, was den Beginn einer neuen Gruppe signalisiert.
  5. @g:=m.profilename – Aktualisiert @g mit dem Profilnamen der aktuellen Gruppe, sodass wir nachfolgende, zu dieser Gruppe gehörende Zeilen verfolgen können Gruppe.
  6. Die Hauptabfrage ruft den Profilnamen und den Namen aus dem Alias ​​X der Unterabfragetabelle ab.
  7. Die letzte Bedingung WHERE r <= 5 filtert nur die fünf am höchsten bewerteten Elemente innerhalb jeder Gruppe heraus.

Durch die Implementierung dieses Ansatzes können Sie effizient die gewünschten Ergebnisse erzielen, ohne dass der Fehler „Unterabfrage gibt mehr als 1 Zeile zurück“ auftritt.

Das obige ist der detaillierte Inhalt vonWie rufe ich die Top 5 Elemente aus jeder Kategorie in MySQL ab und vermeide dabei den Fehler „Unterabfrage gibt mehr als 1 Zeile zurück'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage