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

Comment puis-je diviser efficacement des listes séparées par des virgules en plusieurs lignes dans MySQL ?

DDD
DDDoriginal
2025-01-06 11:59:48412parcourir

How Can I Efficiently Split Comma-Separated Lists into Multiple Rows in MySQL?

MySQL : diviser une liste séparée par des virgules en plusieurs lignes

Les tables non normalisées présentent un défi lorsqu'il s'agit de clés étrangères stockées sous forme de virgules. listes séparées. MySQL ne fournit pas de solution directe à ce problème en utilisant une fonction qui renvoie une table. Cependant, une solution de contournement peut être obtenue grâce à une combinaison de techniques.

Utilisation d'une opération de jointure :

Pour rejoindre une liste séparée par des virgules, utilisez le Fonction FIND_IN_SET() pour déterminer si une valeur est présente dans l'autre. Cela vous permet de créer une jointure entre vos tables en fonction d'éléments spécifiques dans les listes. Par exemple :

SELECT part_id,
       vechicle_id
FROM vehicles
JOIN load_plan_configs ON FIND_IN_SET(vechicle_id, load_plan_configs.vehicle_ids)
WHERE load_plan_configs.id = 42;

Création d'une nouvelle table avec INSERT :

Une autre approche consiste à créer une nouvelle table qui stockera les valeurs fractionnées. Vous pouvez utiliser une requête qui parcourt les valeurs séparées par des virgules et les insère dans la nouvelle table. Par exemple :

INSERT INTO new_table (part_id, material_id)
SELECT part_id,
       SUBSTRING(material, INSTR(material, ',') + 1) AS material_id
FROM table_with_comma_separated_values;

Cette requête créera une nouvelle table avec les valeurs fractionnées où chaque part_id a une entrée distincte pour chaque Material_id dans la liste séparée par des virgules.

En utilisant ces techniques , vous pouvez diviser efficacement les listes séparées par des virgules en plusieurs lignes dans MySQL, vous permettant ainsi de travailler avec les données de manière plus structurée et accessible.

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!

Déclaration:
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