ホームページ >データベース >mysql チュートリアル >GROUP_CONCAT を逆にして、MySQL で集計された文字列から個々の値を抽出するにはどうすればよいですか?
GROUP_CONCAT の解明: 集計データからの個別の値の抽出
データベース管理の領域では、GROUP_CONCAT 関数は複数のデータを集計するための強力なツールです。値を単一のカンマ区切り文字列に変換します。ただし、これらの集約された文字列を個々のコンポーネントに分解するという、逆の課題に直面する場合もあります。
問題の本質
次のデータを考慮してください。 「colors」という名前のテーブル:
| id | colors | |----+----------------------| | 1 | Red,Green,Blue | | 2 | Orangered,Periwinkle |
あなたの目標は、このデータを、それぞれがcolor は別の行として表されます:
| id | colors | |----+------------| | 1 | Red | | 1 | Green | | 1 | Blue | | 2 | Orangered | | 2 | Periwinkle |
解決策: 文字列の解明
MySQL は、このタスクを実行するためのいくつかのテクニックを提供します。 1 つのアプローチでは、次のように SUBSTRING_INDEX 関数と SUBSTRING 関数を利用します。
SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(colors, ',', n.digit+1), ',', -1) color FROM colors INNER JOIN (SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3) n ON LENGTH(REPLACE(colors, ',' , '')) <= LENGTH(colors)-n.digit ORDER BY id, n.digit
このクエリは次のように動作します。
謎の解明: 逆集計またはUn-GROUP_CONCAT
上記の操作は、「逆集約」または「un-GROUP_CONCAT」と呼ばれることがよくあります。これにより、以前に集計または連結されたデータから個々の値を抽出して分離できます。この手法は、集計自体ではなく個々のデータ ポイントに対してさらなる分析や変換を実行する必要がある場合に特に役立ちます。
以上がGROUP_CONCAT を逆にして、MySQL で集計された文字列から個々の値を抽出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。