Heim >Datenbank >MySQL-Tutorial >Wie teilt man durch Kommas getrennte Listen in MySQL effizient auf?
Aufteilen von durch Kommas getrennten Listen in MySQL
Um nicht normalisierte Daten mit durch Kommas getrennten Listen zu verarbeiten, gibt es zwei Ansätze: Verbinden oder Einfügen in ein neuer Tisch.
Mitmachen Vorgehensweise:
CREATE TEMP TABLE UNIQUE_MATERIALS AS SELECT DISTINCT TRIM(MATERIAL) AS MATERIAL FROM PART_TABLE;
SELECT p.part_id, m.material_id FROM PART_TABLE p JOIN UNIQUE_MATERIALS m ON p.MATERIAL LIKE CONCAT('%', m.MATERIAL, '%');
Einfügeansatz:
CREATE TABLE SPLIT_MATERIALS (part_id INT, material_id INT); INSERT INTO SPLIT_MATERIALS (part_id, material_id) VALUES (339, 1), (339, 2), (970, 2);
INSERT INTO SPLIT_MATERIALS (part_id, material_id) SELECT part_id, STR_TO_INT(TRIM(SUBSTR(MATERIAL, pos - 1, INSTR(MATERIAL, ',', pos) - pos + 1))) FROM PART_TABLE, (SELECT @pos := 1) AS vars, (SELECT INSTR(MATERIAL, ',')) AS tmp WHERE STR_TO_INT(SUBSTR(MATERIAL, @pos - 1, INSTR(MATERIAL, ',', @pos) - @pos + 1)) IS NOT NULL AND INSTR(MATERIAL, ',', @pos) > 0 GROUP BY part_id, STR_TO_INT(SUBSTR(MATERIAL, @pos - 1, INSTR(MATERIAL, ',', @pos) - @pos + 1)) ORDER BY part_id, SUBSTR(MATERIAL, @pos - 1, INSTR(MATERIAL, ',', @pos) - @pos + 1);
Sobald die neue Tabelle gefüllt ist, kann sie für Abfragen, die die getrennten Werte erfordern, mit der Originaltabelle verknüpft werden.
Das obige ist der detaillierte Inhalt vonWie teilt man durch Kommas getrennte Listen in MySQL effizient auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!