So geben Sie die Top 5 Elemente in jeder Kategorie in MySQL zurück
Die Rückgabe einer begrenzten Anzahl von Datensätzen aus jeder Kategorie ist eine häufige Anforderung in Datenbankanwendungen. Im speziellen Fall der Rückgabe der fünf wichtigsten Menüpunkte pro Menü entsteht die Herausforderung dadurch, dass die Unterabfrage mehrere Zeilen für jedes Menü zurückgibt, was zum Fehler „Unterabfrage gibt mehr als 1 Zeile zurück“ führt.
Um dieses Problem zu lösen Bei diesem Problem besteht ein gängiger Ansatz darin, Variablen mit Nebeneffekten zu verwenden. Hier ist eine korrigierte Abfrage, die den Fehler behebt:
SELECT profilename, name FROM ( SELECT m.profilename, s.name, @r:=case when @g=m.profilename then @r+1 else 1 end r, @g:=m.profilename FROM (select @g:=null,@r:=0) n cross join menus m left join menuitems s on m.menuid = s.menuid ) X WHERE r <= 5
Aufschlüsselung der Abfrage:
Durch die Verwendung von Variablen mit Nebeneffekten stellt diese Abfrage sicher, dass dies der Fall ist Gibt höchstens 5 Datensätze für jede Kategorie zurück und behebt den ursprünglichen Fehler.
Das obige ist der detaillierte Inhalt vonWie gebe ich die Top 5 Elemente in jeder Kategorie in MySQL zurück: Umgang mit Unterabfragefehlern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!