MySQL でデータを行から列に動的に再形成する必要がありますか?この強力なデータベース システムは、この重要なデータ変換のための効率的な方法を提供します。
2 つのテーブル A と B について考えます。テーブル A には ID 列が含まれ、テーブル B には各 ID に関連付けられた複数の値が保持されており、ピボット テーブル構造に似ています。 課題: テーブル B の行を結果セットの列に動的に変換します。
MySQL の GROUP BY
関数と MAX
関数は、洗練されたソリューションを提供します。 ID を使用してデータをグループ化し、MAX
関数を使用することで、ピボット操作を効果的にシミュレートします。 テーブル A と B を使用した簡単な例:
<code class="language-sql">SELECT ID, MAX(IF(`order` = 1, data, NULL)) data1, MAX(IF(`order` = 2, data, NULL)) data2 FROM TableA GROUP BY ID</code>
このクエリは、出力のテーブル B の行を列 data1
と data2
に変換します。 IF
ステートメントにより、各注文の正しいデータのみが選択されるようになります。
多数の注文値を伴うより複雑なシナリオの場合、動的 SQL は柔軟なアプローチを提供します。クエリは個別の注文の数に自動的に適応します:
<code class="language-sql">SET @sql = NULL; SELECT GROUP_CONCAT(DISTINCT CONCAT( 'MAX(IF(`order` = ', `order`, ',data,NULL)) AS data', `order`) ) INTO @sql FROM TableName; SET @sql = CONCAT('SELECT ID, ', @sql, ' FROM TableName GROUP BY ID'); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;</code>
静的 SQL アプローチと動的 SQL アプローチの両方により、MySQL で効率的な行から列への変換が可能になり、データ分析が強化され、複雑なデータセットから貴重な洞察が得られます。
以上がMySQL で行を列に動的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。