ホームページ >データベース >mysql チュートリアル >MySQL でカンマ区切りのリストを複数の行に分割するにはどうすればよいですか?
MySQL でカンマ区切りのリストを複数の行に分割する
問題:
テーブル別のテーブルへの外部キーとして機能する、カンマ区切りの値を持つ列が含まれています。このデータを結合またはクエリを通じて処理して、新しいテーブルに複数のエントリを作成し、データを効果的に「非正規化」するにはどうすればよいでしょうか?
解決策:
MySQL は、FIND_IN_SET() を使用してこれらのカンマ区切りリストを分割するソリューションを提供します。 function.
SELECT material_id FROM materials WHERE FIND_IN_SET(name, part.material) > 0;
このクエリは、パーツ テーブルの材料列のカンマ区切りリストに存在する材料テーブル内の各名前の材料 ID を取得します。結果は、必要に応じて、part_id とmaterial_id のペアを含むフラット化されたテーブルになります。
例:
次のデータについて考えてみましょう:
+---------+-------------+ | part_id | material | +---------+-------------+ | 339 | 1.2mm;1.6mm | | 970 | 1.6mm | +---------+-------------+
次のクエリは、material 列を個別の行に分割します:
SELECT part_id, material_id FROM materials WHERE FIND_IN_SET(name, part.material) > 0;
結果は次のようになります:
+---------+-------------+ | part_id | material_id | +---------+-------------+ | 339 | 1 | | 339 | 2 | | 970 | 2 | +---------+-------------+
以上がMySQL でカンマ区切りのリストを複数の行に分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。