„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > 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“?

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“?

Veröffentlicht am 20.11.2024
Durchsuche:331

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 übereinstimmt 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 WHERE-Bedingung r

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

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3