MySQL データの再構成: 列の拡張
テーブルデータを再形成する必要がある場合、列のピボット解除が必要になります。この手法は列を行に変換し、より柔軟なデータ表現を提供します。 MySQL は明示的な拡張機能を提供しませんが、賢いクエリ構築によって同じ効果を達成できます。
方法 1: UNION ALL を使用して
をクエリします1 つの方法は、複数の SELECT ステートメントの結果を一緒に追加する UNION ALL クエリを使用することです。この例では、展開する必要がある列ごとに個別の SELECT ステートメントを作成します。
<code class="language-sql">select id, 'a' col, a value from yourtable union all select id, 'b' col, b value from yourtable union all select id, 'c' col, c value from yourtable</code>
このクエリは、各行が列値のペアを表す新しいテーブルを構築します。結果のテーブルは次のレイアウトになります:
ID | col | value |
---|---|---|
1 | a | a1 |
1 | b | b1 |
1 | c | c1 |
2 | a | a2 |
2 | b | b2 |
2 | c | c2 |
方法 2: CROSS JOIN を使用する
もう 1 つのアプローチは、複数のテーブルのデカルト積を生成する CROSS JOIN を使用することです。 yourtable と列名を含むテーブルを組み合わせると、次のことが実現できます:
<code class="language-sql">select t.id, c.col, case c.col when 'a' then a when 'b' then b when 'c' then c end as data from yourtable t cross join ( select 'a' as col union all select 'b' union all select 'c' ) c</code>
このクエリは UNION ALL クエリと同じ出力を生成し、さらなる分析やデータ操作のための柔軟なデータ表現を提供します。
これらの展開手法を MySQL に実装すると、データをより簡単にナビゲート可能な形式に再形成することで、データから有意義な洞察を効果的に抽出できます。
以上がMySQL で列のピボットを解除してデータを再構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。