Heim >Datenbank >MySQL-Tutorial >Wie kann ich die Anzahl der in einer GROUP_CONCAT-Abfrage angezeigten Fähigkeiten auf die ersten drei beschränken?
GROUP_CONCAT mit Fähigkeitslimit
In einer Datenbank mit Spielern und ihren Fähigkeiten in einer Viele-zu-Viele-Beziehung ist eine Abfrage erforderlich Listen Sie die Spieler und ihre drei besten Fähigkeiten auf. Die erste Abfrage versucht, GROUP_CONCAT zum Verketten von Fertigkeitstiteln zu verwenden, aber es fehlt eine Möglichkeit, die Anzahl der Fertigkeiten auf drei zu begrenzen.
Lösung:
GRUPPE_CONCAT hingegen nicht Um ein Limit direkt zu unterstützen, kann eine Problemumgehung durch Nachbearbeitung der verketteten Zeichenfolge verwendet werden:
substring_index(group_concat(s.title SEPARATOR ','), ',', 3) as skills
This Der Befehl extrahiert die ersten drei durch Kommas getrennten Fertigkeitstitel aus der verketteten Zeichenfolge. Es wird davon ausgegangen, dass Fertigkeitsnamen keine Kommas enthalten und dass die Anzahl der Fertigkeiten relativ gering ist.
Hinweis:
Um korrekte Ergebnisse sicherzustellen, sollte die Tabelle „player_skills“ eine haben Primärschlüssel bestehend aus dem Tupel (Spieler-ID, Fertigkeits-ID), der verhindert, dass die gleiche Fertigkeit einem Spieler mehrmals zugewiesen wird.
Das obige ist der detaillierte Inhalt vonWie kann ich die Anzahl der in einer GROUP_CONCAT-Abfrage angezeigten Fähigkeiten auf die ersten drei beschränken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!