Maison > base de données > tutoriel mysql > Comment diviser des listes séparées par des virgules en plusieurs lignes dans MySQL ?

Comment diviser des listes séparées par des virgules en plusieurs lignes dans MySQL ?

Susan Sarandon
Libérer: 2025-01-06 11:51:41
original
277 Les gens l'ont consulté

How to Split Comma-Separated Lists into Multiple Rows in 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;
Copier après la connexion

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       |
+---------+-------------+
Copier après la connexion

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;
Copier après la connexion

Le résultat serait être :

+---------+-------------+
| part_id | material_id |
+---------+-------------+
|     339 |           1 |
|     339 |           2 |
|     970 |           2 |
+---------+-------------+
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal