Maison >base de données >tutoriel mysql >Comment puis-je concaténer plusieurs lignes en une seule ligne à l'aide de SQL ?
Combinaison de plusieurs lignes en une seule ligne avec SQL
De nombreuses tâches de base de données nécessitent de fusionner plusieurs lignes avec des valeurs identiques dans une colonne en une seule ligne, en concaténant les valeurs d'une autre colonne. Imaginez une base de données de films avec des acteurs répertoriés dans des lignes séparées pour chaque film :
<code>Movie | Actor ---------------- A 1 A 2 A 3 B 4</code>
L'objectif est de créer un ensemble de résultats comme celui-ci :
<code>Movie | ActorList ---------------- A 1, 2, 3 B 4</code>
Utilisation de l'agrégation de chaînes pour la consolidation
La fonctionSQL string_agg
fournit une solution efficace. Cette fonction d'agrégation concatène les valeurs d'une colonne spécifiée. Voici la requête :
<code class="language-sql">SELECT movie, string_agg(actor::text, ', ') AS actor_list FROM tbl GROUP BY movie;</code>
Voici la répartition :
string_agg(actor::text, ', ')
: Cette partie concatène les valeurs de la colonne actor
, en utilisant une virgule et un espace comme séparateur. Le ::text
convertit explicitement la colonne actor
en texte, ce qui est nécessaire s'il ne s'agit pas déjà d'un type de données texte.GROUP BY movie
: cela regroupe les lignes par colonne movie
, garantissant que les acteurs du même film sont regroupés.actor_list
: Il s'agit de l'alias de la chaîne concaténée résultante.Améliorations et considérations :
::text
montré ci-dessus).ORDER BY
à l'intérieur de string_agg
:<code class="language-sql">SELECT movie, string_agg(actor::text, ', ' ORDER BY actor) AS actor_list FROM tbl GROUP BY movie;</code>
Ce tri dans la requête est généralement plus efficace que le tri de l'ensemble de résultats final.
Cette approche consolide efficacement plusieurs lignes en une seule ligne plus gérable, ce qui simplifie l'analyse des données et la création de rapports.
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!