MySQL实现行转列的过程分析(mysql行转列过程)

MySQL实现行转列即对表中的若干行记录,把同一个字段的值要求转变成多行记录的方法,又称行转列或称变维。MySQL5.5.6+版本有一个重要的函数—— GROUP_CONCAT() 函数,其可以实现行转列的功能。在MySQL5.5.6及以下版本,要想实现行转列, SQL 语句的复杂度就比较大,实现起来也不是很方便。

下面,结合一个实例来详细讲解MySQL实现行转列的过程分析:

假设有一个字段 ID,其有3个值,如下表所示:

| ID | 名称 |

|–|–|

|1 | Google |

|2 | Yahoo |

|3 | Baidu |

该字段 ID 的值想要把表中若干行记录转成列,那么可以使用MySQL的GROUP_CONCAT() 函数实现行转列的功能,SQL语句如下:

SELECT 
GROUP_CONCAT(concat_ws('_', ID, 名称) SEPARATOR '|')
FROM 表名;

该语句会返回结果:

1_Google|2_Yahoo|3_Baidu

即转换后行转列的结果,把表中若干行转变成一行。

当然,换一种方式也可以实现行转列:

SELECT
MAX(CASE ID WHEN '1' THEN 名称 END) AS 第一列,
MAX(CASE ID WHEN '2' THEN 名称 END) AS 第二列,
MAX(CASE ID WHEN '3' THEN 名称 END) AS 第三列
FROM 表名;

以上SQL语句执行结果如下:

|第一列|第二列|第三列|

|-|-|-|

|Google|Yahoo|Baidu|

总结:MySQL实现行转列的方法有以上两种,自由选择。需要注意的是,MySQL5.5.6及以下版本不支持GROUP_CONCAT()函数,需要使用第二种方式才可以实现行转列的功能。


数据运维技术 » MySQL实现行转列的过程分析(mysql行转列过程)