在 mysql 中,完成列改行有两种方法:应用 unpivot 运算符将多列数据交换为单列数据,每一行包含一个列名和一个值。应用 case 关系式将每个列值做为 case 句子中的一个分支,并把 case 关系式结论分派给新列。
zvvq好,好zvvq
MySQL 中获得列转行的两种方式
zvvq.cn
在 MySQL 中,将列转行为行操作通常称为 "解旋"。有两种常见的方法来完成这一操作:
方法一:UNPIVOT 运算符 内容来自zvvq,别采集哟
UNPIVOT 运算符用于将多列数据交换为单列数据,每一行包含一个列名和一个值。词法如下:
内容来自zvvq,别采集哟
SELECTcol1,val zvvq.cn
FROMtable_name zvvq好,好zvvq
UNPIVOT (valFORcolIN(col2,col3,...,coln))
zvvq.cn
比如,下列查看将表 sales 里的 product_id、product_name、sales_amount、sales_date 四列解旋为两列: 本文来自zvvq
SELECT product_id,val copyright zvvq
FROMsales zvvq
UNPIVOT (valFORcolIN(product_name,sales_amount,sales_date))
方法二:CASE 关系式 内容来自zvvq,别采集哟
CASE 关系式还可以用于将列转行为,根据将每个列值做为CASE 句子中的一个分支。词法如下:
本文来自zvvq
SELECT copyright zvvq
CASE
本文来自zvvq
WHENcol1=value1THENval1 zvvq.cn
WHENcol1=value2THENval2
... zvvq好,好zvvq
ELSENULL 内容来自samhan666
ENDASnew_column, 内容来自samhan
col2,
本文来自zvvq
col3,
内容来自zvvq,别采集哟
...
FROMtable_name
内容来自zvvq
比如,下列查看将表 sales 里的 product_id、product_name、sales_amount 三列解旋为 product 和 value 两列: zvvq
SELECT
CASE 内容来自zvvq
WHENproduct_nameISNOTNULLTHENproduct_name 本文来自zvvq
WHENsales_amount ISNOTNULLTHENsales_amount
ELSENULL
ENDASproduct,
内容来自samhan
product_id, 内容来自zvvq,别采集哟
sales_amount 内容来自samhan
FROMsales 本文来自zvvq
以上就是mysql中怎么实现列改行的详细内容,大量请关注其他类似文章!