MySQL 資料重塑:列的展開
當需要重塑表格資料時,列的展開(Unpivoting)就變得必要了。這項技術將列轉換為行,提供更靈活的資料表示。雖然 MySQL 沒有提供明確的展開函數,但我們可以透過巧妙的查詢建構來實現相同的效果。
方法一:使用 UNION ALL 查詢
一種方法是使用 UNION ALL 查詢,它將多個 SELECT 語句的結果附加在一起。在本例中,我們為每個需要展開的欄位建立一個單獨的 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 |
方法二:使用 CROSS JOIN
另一種方法是使用 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中文網其他相關文章!