Maison >base de données >tutoriel mysql >Comment concaténer des acteurs pour chaque film dans une table SQL ?

Comment concaténer des acteurs pour chaque film dans une table SQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-15 06:27:43414parcourir

How to Concatenate Actors for Each Movie in a SQL Table?

Combinaison des noms d'acteurs pour chaque film dans une table SQL

Imaginez un tableau avec des colonnes "Film" et "Acteur". La tâche consiste à récupérer une liste de films et de leurs acteurs correspondants, avec tous les acteurs de chaque film combinés en une seule chaîne.

Solution utilisant string_agg() :

La méthode la plus efficace utilise la fonction string_agg() (disponible dans PostgreSQL 9.0 et versions ultérieures) :

<code class="language-sql">SELECT movie, string_agg(actor, ', ') AS actor_list
FROM table_name
GROUP BY movie;</code>

string_agg() concatène les noms d'acteurs, séparés par des virgules, pour chaque film. GROUP BY movie assure une rangée par film.

Alternative pour les anciennes versions de PostgreSQL (pré-9.0) :

Pour les anciennes versions de PostgreSQL, utilisez array_agg() et 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>

Cela regroupe les acteurs dans un tableau, puis le convertit en une chaîne séparée par des virgules. La clause ORDER BY actor trie les acteurs par ordre alphabétique dans la liste de chaque film.

Personnalisation de l'ordre de la liste des acteurs :

Pour contrôler l'ordre des acteurs dans chaque liste (par exemple, par ordre de facturation), ajoutez ORDER BY à l'intérieur de string_agg() ou array_agg() :

<code class="language-sql">SELECT movie, string_agg(actor, ', ' ORDER BY actor) AS actor_list  --Alphabetical order
FROM table_name
GROUP BY movie;</code>

Cette approche rationalise la présentation des relations film-acteur, facilitant l'analyse et l'affichage des données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn