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.
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!