Heim >Datenbank >MySQL-Tutorial >Wie kann ich durch Kommas getrennte Listen mithilfe von SQL-Abfragen generieren?
Bei Datenbankoperationen ist es häufig erforderlich, eine durch Kommas getrennte Liste von Werten zu erstellen. Beispielsweise möchten Sie möglicherweise eine Liste aller Anwendungen anzeigen, die einer bestimmten Ressource auf der Benutzeroberfläche zugeordnet sind. Es ist zwar möglich, jede Ressource zu durchlaufen, die Anwendung abzurufen und sie selbst zu verbinden, dieser Ansatz ist jedoch ineffizient und zeitaufwändig.
Glücklicherweise bieten die meisten SQL-Datenbanken integrierte String-Verkettungs- und Aggregationsfunktionen. Im Folgenden sind die Implementierungsmethoden mehrerer häufig verwendeter SQL-Dialekte aufgeführt:
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
Oracle bietet eine Vielzahl von Optionen für die Verkettung und Aggregation von Zeichenfolgen. Bitte machen Sie sich mit der spezifischen Syntax der von Ihnen verwendeten Version vertraut.
Diese Abfragen generieren effektiv eine durch Kommas getrennte Liste von Anwendungen für jede Ressource, sodass Sie mit einer einzigen Abfrage die erforderlichen Informationen für Ihre GUI bereitstellen können.
Das obige ist der detaillierte Inhalt vonWie kann ich durch Kommas getrennte Listen mithilfe von SQL-Abfragen generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!