Auswahl der obersten drei Zeilen aus mehreren Kategorien in MySQL
Die Auswahl der obersten Zeilen aus jeder Kategorie innerhalb einer Tabelle kann eine Herausforderung sein. Eine Methode, die Ansichten und Unterabfragen verwendet, wie im ersten Versuch beschrieben, kann falsche Ergebnisse zurückgeben.
Ein effektiverer Ansatz verwendet Analysefunktionen, die MySQL nicht nativ unterstützt. Es ist jedoch möglich, diese Funktionen mithilfe von Variablen zu emulieren. So geht's:
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 Diese Abfrage initialisiert die Variablen @rownum und @category mithilfe einer JOIN-Operation. Anschließend weist es jeder Zeile basierend auf ihrer Kategorie einen Rang zu und erhöht den Rang, wenn sich die Kategorie ändert.
Abschließend wählt die Abfrage nur die Zeilen mit einem Rang von 3 oder weniger aus. Beachten Sie, dass Sie möglicherweise die SELECT x.*-Klausel ändern müssen, um nur die gewünschten Spalten einzuschließen.
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