Heim > Datenbank > MySQL-Tutorial > Wie extrahiere ich effizient durch Kommas getrennte Listen aus MySQL-Unterabfragen?

Wie extrahiere ich effizient durch Kommas getrennte Listen aus MySQL-Unterabfragen?

Linda Hamilton
Freigeben: 2025-01-17 01:52:08
Original
579 Leute haben es durchsucht

How to Efficiently Extract Comma-Separated Lists from MySQL Subqueries?

MySQL-Unterabfragen und durch Kommas getrennte Listen: Ein praktischer Leitfaden

Das Arbeiten mit mehreren MySQL-Tabellen erfordert häufig Unterabfragen. Allerdings kann es schwierig sein, durch Kommas getrennte Listen aus Unterabfrageergebnissen zu erstellen. Dieser Leitfaden zeigt eine Lösung mit GROUP_CONCAT.

Die Herausforderung:

Stellen Sie sich dieses Szenario vor: Sie benötigen eine Abfrage, die Veröffentlichungs-IDs, Namen und eine durch Kommas getrennte Liste der zugehörigen Site-Namen abruft. 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>
Nach dem Login kopieren

Dies erzeugt keine durch Kommas getrennte Zeichenfolge; Stattdessen wird pro Zeile ein einzelner Site-Name zurückgegeben.

Die Lösung mit GROUP_CONCAT:

Die GROUP_CONCAT-Funktion von MySQL ist der Schlüssel zum Erstellen kommagetrennter Listen. 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>
Nach dem Login kopieren

Wie es funktioniert:

  • INNER JOIN: Dadurch werden die Tabellen publications und sites effizient verknüpft, basierend auf übereinstimmenden site_id. Es werden nur Veröffentlichungen mit entsprechenden Websites berücksichtigt.
  • GROUP_CONCAT(s.name): Diese Funktion verkettet alle s.name-Werte (Site-Namen) für jede Veröffentlichungs-ID in einer einzigen durch Kommas getrennten Zeichenfolge, die in der Spalte site_list gespeichert wird.
  • GROUP BY p.id, p.name: Dadurch werden die Ergebnisse nach Veröffentlichungs-ID und Name gruppiert, um sicherzustellen, dass GROUP_CONCAT für jede Veröffentlichung korrekt funktioniert.

Diese überarbeitete Abfrage liefert die gewünschte Ausgabe: Veröffentlichungs-ID, Name und eine sauber formatierte, durch Kommas getrennte Liste der zugehörigen Site-Namen.

Das obige ist der detaillierte Inhalt vonWie extrahiere ich effizient durch Kommas getrennte Listen aus MySQL-Unterabfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage