Im Bereich MySQL kann es sein, dass Sie die von einer GROUP_CONCAT-Anweisung zurückgegebenen Daten bearbeiten müssen. Eine häufige Anforderung besteht darin, die Werte innerhalb der verketteten Zeichenfolge zu sortieren.
Um dies zu erreichen, können Sie das versteckte Juwel der GROUP_CONCAT-Funktion nutzen: die ORDER BY-Klausel. Durch Hinzufügen einer ORDER BY-Klausel zur Unterabfrage innerhalb von GROUP_CONCAT können Sie die Werte sortieren, bevor sie verkettet werden.
Betrachten Sie beispielsweise die folgende Abfrage:
GROUP_CONCAT((SELECT GROUP_CONCAT(parent.name SEPARATOR " » ") FROM test_competence AS node, test_competence AS parent WHERE node.lft BETWEEN parent.lft AND parent.rgt AND node.id = l.competence AND parent.id != 1 ORDER BY parent.lft) SEPARATOR "<br />\n") AS competences
Diese Abfrage gibt Zeilen zurück mit den verketteten Werten der Spalte „parent.name“, sortiert in aufsteigender Reihenfolge basierend auf der Spalte „parent.lft“.
Wenn Sie jedoch eine bestimmte Reihenfolge wünschen, z. B. eine absteigende Reihenfolge, passen Sie einfach die ORDER BY-Klausel an:
... ORDER BY parent.lft DESC
Es ist erwähnenswert, dass die ORDER BY-Klausel in GROUP_CONCAT nur auf die innerste Unterabfrage anwendbar ist. Wenn Sie eine Unterabfrage mit mehreren Ebenen haben, sind die äußeren Abfragen von der ORDER BY-Klausel nicht betroffen.
Das obige ist der detaillierte Inhalt vonWie sortiere ich Werte innerhalb eines GROUP_CONCAT-Strings in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!