Heim >Datenbank >MySQL-Tutorial >Wie kann man mithilfe von SQL effizient durch Kommas getrennte Listen aus relationalen Datenbanktabellen erstellen?
Datenbankaufgaben erfordern häufig die Verkettung von Datenfeldern in durch Kommas getrennte Listen. SQL bietet effiziente Lösungen und macht prozeduralen Code überflüssig.
Beispiel: Stellen Sie sich drei Tabellen vor: Applications
(id, name), Resources
(id, name) und ApplicationsResources
(id, app_id, resources_id). Das Ziel besteht darin, einen Bericht zu erstellen, der jeden Ressourcennamen zusammen mit einer durch Kommas getrennten Liste der zugehörigen Anwendungen anzeigt.
Dies kann mit GROUP_CONCAT
(MySQL und einige SQL Server-Versionen) oder STRING_AGG
(SQL Server 2017 und höher) erreicht werden. Diese Funktionen verketten effizient Werte, die nach einer bestimmten Spalte gruppiert sind.
MySQL/einige SQL Server-Versionen:
<code class="language-sql">SELECT r.name, GROUP_CONCAT(a.name SEPARATOR ',') AS application_names 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 2017 und höher:
<code class="language-sql">SELECT r.name, STRING_AGG(a.name, ',') AS application_names 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:
Oracle bietet mehrere Methoden zur String-Aggregation, darunter LISTAGG
und das Paket DBMS_PCL_ROWPKT
. Ausführliche Anweisungen finden Sie in der Oracle-Dokumentation.
Dieser SQL-basierte Ansatz bietet eine optimierte Methode zum Generieren durch Kommas getrennter Listen direkt in Ihren Datenbankabfragen und verbessert so die Datenpräsentation in Anwendungen und GUIs.
Das obige ist der detaillierte Inhalt vonWie kann man mithilfe von SQL effizient durch Kommas getrennte Listen aus relationalen Datenbanktabellen erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!