做淘宝需要的网站,业务接单网站,辽宁建设工程信息网官网查不良行为,我要学习做网站文章目录 前言一、vertical_table二、转换1.要将其转换为横表形式#xff0c;例如#xff1a;2.sql 总结 前言
在MySQL中将竖表转换为横表#xff08;也称为行转列操作#xff09;#xff0c;不涉及聚合函数#xff0c;通常可以通过使用条件判断和自连接来实现。假设有一… 文章目录 前言一、vertical_table二、转换1.要将其转换为横表形式例如2.sql 总结 前言
在MySQL中将竖表转换为横表也称为行转列操作不涉及聚合函数通常可以通过使用条件判断和自连接来实现。假设有一个竖表vertical_table包含以下结构 一、vertical_table
id | attribute_name | attribute_value
-------------------------------------
1 | name | John
1 | age | 30
1 | city | New York
2 | name | Alice
2 | age | 25
2 | city | Los Angeles
二、转换
1.要将其转换为横表形式例如
id | name | age | city
------------------------
1 | John | 30 | New York
2 | Alice | 25 | Los Angeles
2.sql
SELECTid,MAX(CASE WHEN attribute_name name THEN attribute_value END) AS name,MAX(CASE WHEN attribute_name age THEN attribute_value END) AS age,MAX(CASE WHEN attribute_name city THEN attribute_value END) AS city
FROM vertical_table
GROUP BY id; 总结
这里的关键点是利用了条件表达式 CASE WHEN 将不同的属性名 (attribute_name) 对应的值 (attribute_value) 放置到各自的列中。MAX 函数用于确保每个列中只有一个值因为在没有聚合函数如 GROUP BY的情况下单个查询可以返回多行但是我们只需要一行。
上述查询将竖表 vertical_table 转换为横表每个 id 对应一行并将不同的属性作为列名对应其值。