Heim >Datenbank >MySQL-Tutorial >Wie kann ich in SQL mehrere Schauspielernamen in einer einzelnen Spalte pro Film kombinieren?
Bei der Arbeit mit Filmdatenbanken ist es oft erforderlich, Schauspielerinformationen für jeden Film zusammenzufassen. Dabei werden mehrere Schauspielernamen, die einem einzelnen Film zugeordnet sind, in einem einzigen Spalteneintrag zusammengeführt.
PostgreSQL bietet die Funktion string_agg()
, die sich ideal für diese Aufgabe eignet. Hier ist eine Abfrage, die ihre Verwendung demonstriert:
<code class="language-sql">SELECT movie, string_agg(actor, ', ') AS actors FROM tbl GROUP BY movie;</code>
Diese Abfrage:
movie
: Gibt die Spalte mit Filmtiteln an.actor
: Gibt die Spalte mit den Namen der Schauspieler an.string_agg(actor, ', ')
: Diese Funktion verkettet die Namen der Schauspieler für jeden Film und trennt sie durch Kommas und Leerzeichen.GROUP BY movie
: Gruppiert die Ergebnisse und stellt sicher, dass es eine Zeile pro Film gibt.Die Funktion string_agg()
zeichnet sich dadurch aus, dass sie mehrere Zeilen zu einem einzigen Zeichenfolgewert kombiniert. Hier wird für jeden Film eine durch Kommas getrennte Liste der Schauspieler erstellt.
Für sortierte Schauspielerlisten fügen Sie eine ORDER BY
-Klausel in string_agg()
:
<code class="language-sql">string_agg(actor, ', ' ORDER BY actor) AS actors</code>
Allerdings bietet eine Unterabfrage oft eine bessere Leistung beim Sortieren.
string_agg()
Das obige ist der detaillierte Inhalt vonWie kann ich in SQL mehrere Schauspielernamen in einer einzelnen Spalte pro Film kombinieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!