Heim >Datenbank >MySQL-Tutorial >Wie verbinde ich Tabellen mit durch Kommas getrennten Werten mithilfe von SQL?

Wie verbinde ich Tabellen mit durch Kommas getrennten Werten mithilfe von SQL?

DDD
DDDOriginal
2024-12-14 10:04:10240Durchsuche

How to Join Tables with Comma-Separated Values Using SQL?

Tabellen mit durch Kommas getrennten Werten verbinden: Eine vollständige Anleitung

Datenbanktabellen enthalten häufig durch Kommas getrennte Werte in bestimmten Spalten. Dies stellt beim Abfragen der Daten eine Herausforderung dar, da jeder Wert der entsprechenden Zeile zugeordnet werden muss. Ein häufiges Szenario ist das Verbinden zweier Tabellen, bei denen eine Spalte durch Kommas getrennte Werte enthält, die auf die andere Tabelle verweisen.

Betrachten Sie das folgende Beispiel:

Notizentabelle

nid forDepts
1 1,2,4
2 4,5

Positionstabelle

id name
1 Executive
2 Corp Admin
3 Sales
4 Art
5 Marketing

Das Ziel ist Ordnen Sie die Spalte „forDepts“ in der Tabelle „Notizen“ den entsprechenden Abteilungsnamen aus der Tabelle „Positionen“ zu. Die gewünschte Ausgabe sollte sein:

nid DepartmentName
1 Executive, Corp Admin, Art
2 Art, Marketing

Ohne Änderung der Datenbankstruktur kann dies durch eine Kombination von SQL-Funktionen erreicht werden.

Mit FIND_IN_SET und GROUP_CONCAT

Eine Kombination der Funktionen FIND_IN_SET und GROUP_CONCAT kann verwendet werden, um die Abteilungsnamen für jede zu extrahieren und zusammenzufassen 'forDepts'-Wert:

SELECT  a.nid,
        GROUP_CONCAT(b.name ORDER BY b.id) DepartmentName
FROM    Notes a
        INNER JOIN Positions b
            ON FIND_IN_SET(b.id, a.forDepts) > 0
GROUP   BY a.nid

So funktioniert es

  • Die Funktion FIND_IN_SET prüft, ob ein angegebener Wert in einer durch Kommas getrennten Zeichenfolge vorhanden ist. In diesem Fall wird damit ermittelt, ob der Wert „forDepts“ in der Tabelle „Notizen“ die ID einer Abteilung in der Tabelle „Positionen“ enthält.
  • Die INNER JOIN-Klausel gleicht Zeilen aus den Tabellen „Notizen“ und „Positionen“ ab, in denen die Die Bedingung FIND_IN_SET ist wahr.
  • Die Funktion GROUP_CONCAT aggregiert die übereinstimmenden Abteilungsnamen für jede „NID“ in der Notes-Tabelle. Die ORDER BY-Klausel stellt sicher, dass die Namen in aufsteigender Reihenfolge nach ihrer ID sortiert werden.

Ergebnis

Die Ausgabe der Abfrage wäre die gewünschte Tabelle wobei die Spalte „nid“ mit dem entsprechenden durch Kommas getrennten „DepartmentName“ verbunden ist. Spalte.

Fazit

Durch die Nutzung der Funktionen FIND_IN_SET und GROUP_CONCAT können wir effektiv zwei Tabellen mit durch Kommas getrennten Werten verbinden, wodurch wir Daten tabellenübergreifend extrahieren und aggregieren können , auch wenn die Datenbankstruktur nicht normalisiert ist. Diese Technik erweist sich besonders beim Exportieren von Daten in andere Anwendungen wie Excel.

Das obige ist der detaillierte Inhalt vonWie verbinde ich Tabellen mit durch Kommas getrennten Werten mithilfe von SQL?. 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