Heim > Datenbank > MySQL-Tutorial > Wie rufe ich die Top 5 Elemente aus jeder Kategorie in MySQL ab?

Wie rufe ich die Top 5 Elemente aus jeder Kategorie in MySQL ab?

DDD
Freigeben: 2024-11-06 13:33:03
Original
396 Leute haben es durchsucht

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

Abrufen der Top 5 Elemente aus jeder Kategorie in MySQL

Bei der Arbeit mit Datenbanken ist es oft notwendig, Daten auf eine bestimmte Weise abzurufen . Bei dieser speziellen Frage geht es darum, die Top-5-Elemente aus jeder Kategorie in MySQL zu extrahieren. Bei den betreffenden Tabellen handelt es sich um „menus“ und „menuitems“, wobei „menus“ Menüinformationen enthält und „menuitems“ Details zu einzelnen Menüelementen enthält.

Die bereitgestellte Abfrage:

SELECT m.profilename, name
FROM menus m 
WHERE (SELECT name
        from menuitems s
        where m.menuid = s.menuid
        limit 5)
Nach dem Login kopieren

Leider ist diese Abfrage falsch und erzeugt den Fehler „Unterabfrage gibt mehr als eine Zeile zurück.“ Dieser Fehler tritt auf, weil die Unterabfrage mehrere Zeilen für jede Menükategorie zurückgibt und damit gegen die Bedingung verstößt, dass ein einzelnes Menü nur fünf Elemente enthalten darf.

Um dieses Problem zu beheben, müssen Sie Variablen mit Nebeneffekten verwenden.

Die korrigierte Abfrage:

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
Nach dem Login kopieren

In dieser korrigierten Abfrage führen wir Variablen mit Nebeneffekten ein:

  • @g: behält den Überblick des aktuellen Menünamens
  • @r: zählt die Elemente für jedes Menü
  • r <= 5: begrenzt das Ergebnis nach oben 5 Elemente pro Menü

Durch die Verwendung dieser Variablen durchläuft die Abfrage jedes Menü und die zugehörigen Elemente und erhöht die Anzahl für jedes Menü. Diese Technik stellt sicher, dass Sie nur die Top-5-Elemente für jede Menükategorie abrufen.

Das obige ist der detaillierte Inhalt vonWie rufe ich die Top 5 Elemente aus jeder Kategorie in MySQL ab?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage