Maison >base de données >tutoriel mysql >Comment puis-je générer des listes séparées par des virgules à l'aide de requêtes SQL ?

Comment puis-je générer des listes séparées par des virgules à l'aide de requêtes SQL ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-18 22:18:11516parcourir

How Can I Generate Comma-Separated Lists Using SQL Queries?

Utilisez une requête SQL pour générer une liste séparée par des virgules

Lors des opérations de base de données, il est souvent nécessaire de générer une liste de valeurs séparées par des virgules. Par exemple, vous souhaiterez peut-être afficher une liste de toutes les applications associées à une ressource spécifique dans l'interface utilisateur. Bien qu'il soit possible de parcourir chaque ressource, de récupérer l'application et de les connecter vous-même, cette approche est inefficace et prend du temps.

Heureusement, la plupart des bases de données SQL fournissent des fonctions intégrées de concaténation de chaînes et d'agrégation. Voici les méthodes d'implémentation de plusieurs dialectes SQL couramment utilisés :

MySQL

<code class="language-sql">SELECT r.name,
       GROUP_CONCAT(a.name SEPARATOR ',')
FROM RESOURCES r
JOIN APPLICATIONSRESOURCES ar ON ar.resource_id = r.id
JOIN APPLICATIONS a ON a.id = ar.app_id
GROUP BY r.name</code>

SQL Serveur (2005)

<code class="language-sql">SELECT r.name,
       STUFF((SELECT ',' + a.name
               FROM APPLICATIONS a
               JOIN APPLICATIONRESOURCES ar ON ar.app_id = a.id
              WHERE ar.resource_id = r.id
           GROUP BY a.name
            FOR XML PATH(''), TYPE).value('text()[1]','NVARCHAR(max)'), 1, LEN(','), '')
 FROM RESOURCES r</code>

SQL Serveur (2017)

<code class="language-sql">SELECT r.name,
       STRING_AGG(a.name, ',')
FROM RESOURCES r
JOIN APPLICATIONSRESOURCES ar ON ar.resource_id = r.id
JOIN APPLICATIONS a ON a.id = ar.app_id
GROUP BY r.name</code>

Oracle

Oracle propose une variété d'options de concaténation et d'agrégation de chaînes, veuillez vous familiariser avec la syntaxe spécifique de la version que vous utilisez.

Ces requêtes génèrent efficacement une liste d'applications séparées par des virgules pour chaque ressource, vous permettant de fournir les informations nécessaires à votre interface graphique avec une seule requête.

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