집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 쉼표로 구분된 목록을 효율적으로 분할하는 방법은 무엇입니까?
MySQL에서 쉼표로 구분된 목록 분할
쉼표로 구분된 목록으로 정규화되지 않은 데이터를 처리하려면 두 가지 접근 방식이 있습니다. 새로운 테이블.
참여 접근 방식:
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, '%');
삽입 방법:
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);
한 번 새 테이블이 채워지면 분리가 필요한 쿼리를 위해 원래 테이블과 조인될 수 있습니다. 가치가 있습니다.
위 내용은 MySQL에서 쉼표로 구분된 목록을 효율적으로 분할하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!