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中文网其他相关文章!