ホームページ >データベース >mysql チュートリアル >MySQL で列のピボットを解除してデータを再構築するにはどうすればよいですか?

MySQL で列のピボットを解除してデータを再構築するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-20 05:36:10170ブラウズ

How Can I Unpivot Columns in MySQL to Restructure My Data?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。