Heim >Datenbank >MySQL-Tutorial >Wie teile ich durch Kommas getrennte Listen in MySQL in mehrere Zeilen auf?

Wie teile ich durch Kommas getrennte Listen in MySQL in mehrere Zeilen auf?

Susan Sarandon
Susan SarandonOriginal
2025-01-06 11:51:41282Durchsuche

How to Split Comma-Separated Lists into Multiple Rows in MySQL?

Komma-getrennte Listen in mehrere Zeilen in MySQL aufteilen

Problem:

Eine Tabelle enthält eine Spalte mit durch Kommas getrennten Werten, die als Fremdschlüssel für eine andere Tabelle dienen. Wie können diese Daten verarbeitet werden, entweder durch einen Join oder eine Abfrage, um mehrere Einträge in einer neuen Tabelle zu erstellen und die Daten effektiv zu „entnormalisieren“?

Lösung:

MySQL bietet eine Lösung zum Aufteilen dieser durch Kommas getrennten Listen mithilfe der Funktion FIND_IN_SET().

SELECT material_id
FROM materials
WHERE FIND_IN_SET(name, part.material) > 0;

Diese Abfrage ruft ab die material_id für jeden Namen in der Materialtabelle, der in der durch Kommas getrennten Liste in der Materialspalte der Teiletabelle vorhanden ist. Das Ergebnis ist eine abgeflachte Tabelle mit Paaren aus part_id und material_id, wie gewünscht.

Beispiel:

Berücksichtigen Sie die folgenden Daten:

+---------+-------------+
| part_id | material    |
+---------+-------------+
|     339 | 1.2mm;1.6mm |
|     970 | 1.6mm       |
+---------+-------------+

Die folgende Abfrage würde die Materialspalte in separate Zeilen aufteilen:

SELECT part_id, material_id
FROM materials
WHERE FIND_IN_SET(name, part.material) > 0;

Das Ergebnis wäre sein:

+---------+-------------+
| part_id | material_id |
+---------+-------------+
|     339 |           1 |
|     339 |           2 |
|     970 |           2 |
+---------+-------------+

Das obige ist der detaillierte Inhalt vonWie teile ich durch Kommas getrennte Listen in MySQL in mehrere Zeilen auf?. 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