Heim > Datenbank > MySQL-Tutorial > Wie wählt man in MySQL ohne Analysefunktionen effizient die obersten Zeilen pro Kategorie aus?

Wie wählt man in MySQL ohne Analysefunktionen effizient die obersten Zeilen pro Kategorie aus?

DDD
Freigeben: 2024-10-28 19:05:29
Original
213 Leute haben es durchsucht

How to Efficiently Select Top Rows per Category in MySQL Without Analytic Functions?

Top-Zeilen pro Kategorie in MySQL auswählen

Um eine begrenzte Anzahl von Zeilen aus jeder Kategorie in einer Tabelle abzurufen, können Sie Analysefunktionen nutzen . Allerdings bietet MySQL diese Funktionen nicht direkt an. Dennoch ist es möglich, sie mithilfe von Variablen zu emulieren.

Analysefunktionen emulieren

Die folgende MySQL-Abfrage emuliert die Funktionalität von Analysefunktionen, um die obersten drei Zeilen für jede Kategorie auszuwählen :

<code class="mysql">SELECT x.*
FROM (
    SELECT t.*,
    CASE 
        WHEN @category != t.category THEN @rownum := 1 
        ELSE @rownum := @rownum + 1 
    END AS rank,
    @category := t.category AS var_category
    FROM TBL_ARTIKUJT t
    JOIN (SELECT @rownum := NULL, @category := '') r
    ORDER BY t.category
) x
WHERE x.rank <= 3</code>
Nach dem Login kopieren

Erklärung

  • Die Unterabfrage wählt alle Zeilen aus der TBL_ARTIKUJT-Tabelle aus und initialisiert zwei Sitzungsvariablen, @rownum und @category, um die zu verfolgen aktuelle Rangfolge und Kategorie.
  • Der jeder Zeile zugewiesene Rang gibt seine Position innerhalb seiner Kategorie an. Wenn eine neue Kategorie gefunden wird, wird der Rang auf 1 zurückgesetzt.
  • var_category wird verwendet, um die Kategorie für jede Zeile zu speichern.
  • Die äußere SELECT-Anweisung filtert die Unterabfrage und wählt nur Zeilen mit einem Rang aus kleiner oder gleich 3.

Mit dieser Methode können Sie die gewünschte Funktionalität implementieren, ohne auf Analysefunktionen angewiesen zu sein, die von MySQL nicht unterstützt werden.

Das obige ist der detaillierte Inhalt vonWie wählt man in MySQL ohne Analysefunktionen effizient die obersten Zeilen pro Kategorie aus?. 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