Heim >Datenbank >MySQL-Tutorial >Wie verkettet man Schauspieler für jeden Film in einer SQL-Tabelle?
Kombinieren von Schauspielernamen für jeden Film in einer SQL-Tabelle
Stellen Sie sich eine Tabelle mit den Spalten „Film“ und „Schauspieler“ vor. Die Aufgabe besteht darin, eine Liste der Filme und ihrer entsprechenden Schauspieler abzurufen, wobei alle Schauspieler für jeden Film in einer einzigen Zeichenfolge zusammengefasst werden.
Lösung mit string_agg()
:
Die effizienteste Methode verwendet die Funktion string_agg()
(verfügbar in PostgreSQL 9.0 und höher):
<code class="language-sql">SELECT movie, string_agg(actor, ', ') AS actor_list FROM table_name GROUP BY movie;</code>
string_agg()
verkettet durch Kommas getrennte Schauspielernamen für jeden Film. GROUP BY movie
sorgt für eine Reihe pro Folie.
Alternative für ältere PostgreSQL-Versionen (vor 9.0):
Für ältere PostgreSQL-Versionen verwenden Sie array_agg()
und array_to_string()
:
<code class="language-sql">SELECT movie, array_to_string(array_agg(actor ORDER BY actor), ', ') AS actor_list FROM table_name GROUP BY movie;</code>
Dadurch werden Akteure in einem Array zusammengefasst und dann in eine durch Kommas getrennte Zeichenfolge konvertiert. Die ORDER BY actor
-Klausel sortiert die Schauspieler in der Liste jedes Films alphabetisch.
Anpassen der Reihenfolge der Schauspielerliste:
Um die Reihenfolge der Akteure innerhalb jeder Liste zu steuern (z. B. nach Abrechnungsreihenfolge), fügen Sie ORDER BY
innerhalb von string_agg()
oder array_agg()
hinzu:
<code class="language-sql">SELECT movie, string_agg(actor, ', ' ORDER BY actor) AS actor_list --Alphabetical order FROM table_name GROUP BY movie;</code>
Dieser Ansatz optimiert die Darstellung der Beziehungen zwischen Film und Schauspieler und erleichtert die Datenanalyse und -anzeige.
Das obige ist der detaillierte Inhalt vonWie verkettet man Schauspieler für jeden Film in einer SQL-Tabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!