Heim >Datenbank >MySQL-Tutorial >Wie kann ich durch Kommas getrennte Listen aus MySQL-Abfrageergebnissen generieren?

Wie kann ich durch Kommas getrennte Listen aus MySQL-Abfrageergebnissen generieren?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-17 01:57:08327Durchsuche

How Can I Generate Comma-Separated Lists from MySQL Query Results?

Komma-getrennte Listen aus MySQL-Daten generieren

Das Extrahieren von Daten in einem bestimmten Format, beispielsweise einer durch Kommas getrennten Liste, ist eine häufige Aufgabe. Angenommen, Sie benötigen Veröffentlichungsdetails und eine durch Kommas getrennte Liste der zugehörigen Site-Namen. Ein naiver Ansatz mit einer Unterabfrage könnte so aussehen:

<code class="language-sql">SELECT p.id, p.name, 
       (SELECT name 
          FROM sites s 
         WHERE s.id = p.site_id) AS site_list
  FROM publications p</code>

Dies erzeugt jedoch einen einzelnen Site-Namen pro Zeile und keine durch Kommas getrennte Liste.

Die Lösung: GROUP_CONCAT

Der Schlüssel zum Erstellen der gewünschten durch Kommas getrennten Liste ist die Funktion GROUP_CONCAT. Diese Funktion verkettet mehrere Werte zu einer einzigen Zeichenfolge, getrennt durch Kommas (oder ein benutzerdefiniertes Trennzeichen). Hier ist die verbesserte Abfrage:

<code class="language-sql">SELECT p.id, p.name, GROUP_CONCAT(s.name) AS site_list
FROM sites s
INNER JOIN publications p ON (s.id = p.site_id)
GROUP BY p.id, p.name;</code>

Diese überarbeitete Abfrage verwendet GROUP_CONCAT(s.name), um Site-Namen zu kombinieren. Die INNER JOIN verknüpft effizient die Tabellen publications und sites und GROUP BY p.id, p.name stellt sicher, dass die Funktion GROUP_CONCAT die Site-Namen für jede Veröffentlichung korrekt aggregiert.

Das obige ist der detaillierte Inhalt vonWie kann ich durch Kommas getrennte Listen aus MySQL-Abfrageergebnissen generieren?. 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