Heim >Datenbank >MySQL-Tutorial >Wie generiert man effizient durch Kommas getrennte Listen aus mehreren SQL-Tabellen?

Wie generiert man effizient durch Kommas getrennte Listen aus mehreren SQL-Tabellen?

Barbara Streisand
Barbara StreisandOriginal
2025-01-18 22:21:11138Durchsuche

How to Efficiently Generate Comma-Separated Lists from Multiple SQL Tables?

Integrieren Sie SQL-Abfragen, um durch Kommas getrennte Listen zu generieren

In SQL ist es oft notwendig, durch Kommas getrennte Listen aus Daten in mehreren Tabellen zu generieren. Angenommen, Sie haben drei Tabellen: Applications(id,name), Resources(id,name) und ApplicationsResources(id,app_id,resource_id) und möchten eine Tabelle erstellen, die alle Ressourcennamen anzeigt, in denen jede Zeile Folgendes enthält Die durch Kommas getrennte Liste der mit der Ressource verknüpften Anwendungen.

Der einfachste Weg besteht darin, für jede Ressource eine separate Abfrage durchzuführen, aber das ist ineffizient. Stattdessen können wir komplexere SQL-Techniken nutzen, um dies in einer einzigen Abfrage zu erreichen.

Methode:

Die folgende SQL-Abfrage zeigt, wie dies erreicht wird:

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 Server (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 Server (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>

Orakel:

In Oracle werden String-Aggregationen und Joins unterschiedlich gehandhabt. Informationen zu spezifischen Techniken zur Zeichenfolgenverarbeitung finden Sie in der Oracle-Dokumentation.

Das obige ist der detaillierte Inhalt vonWie generiert man effizient durch Kommas getrennte Listen aus mehreren SQL-Tabellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn