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()函数,需要使用第二种方式才可以实现行转列的功能。