Maison >base de données >tutoriel mysql >Comment diviser des listes séparées par des virgules en plusieurs lignes dans MySQL ?
Diviser des listes séparées par des virgules en plusieurs lignes dans MySQL
Problème :
Une table contient une colonne avec des valeurs séparées par des virgules qui servent de clés étrangères à une autre table. Comment ces données peuvent-elles être traitées, via une jointure ou une requête, pour créer plusieurs entrées dans une nouvelle table, « dénormalisant » efficacement les données ?
Solution :
MySQL propose une solution pour diviser ces listes séparées par des virgules à l'aide de la fonction FIND_IN_SET().
SELECT material_id FROM materials WHERE FIND_IN_SET(name, part.material) > 0;
Cette requête récupère le Material_id pour chaque nom de la table des matériaux présent dans la liste séparée par des virgules dans la colonne des matériaux de la table des pièces. Le résultat est un tableau aplati avec des paires de part_id et materials_id, comme vous le souhaitez.
Exemple :
Considérez les données suivantes :
+---------+-------------+ | part_id | material | +---------+-------------+ | 339 | 1.2mm;1.6mm | | 970 | 1.6mm | +---------+-------------+
La requête suivante diviserait la colonne de matériaux en lignes distinctes :
SELECT part_id, material_id FROM materials WHERE FIND_IN_SET(name, part.material) > 0;
Le résultat serait être :
+---------+-------------+ | part_id | material_id | +---------+-------------+ | 339 | 1 | | 339 | 2 | | 970 | 2 | +---------+-------------+
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!