如何将多行数据合并成一行多列

1. 流程图

sequenceDiagram
    小白 ->> 经验丰富的开发者: 请求帮助
    经验丰富的开发者-->>小白: 解答问题

2. 实现步骤

步骤 操作
1 创建一个新表用于存放合并后的数据
2 将多行数据合并成一行多列
3 将合并后的数据插入新表中

步骤一:创建新表

CREATE TABLE new_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    merged_data VARCHAR(255)
);
  • 代码解释:创建一个名为new_table的新表,包含id和merged_data两列,其中id为自增主键,merged_data用于存放合并后的数据。

步骤二:合并数据

SET @sql = NULL;
SELECT
    GROUP_CONCAT(DISTINCT
        CONCAT(
            'MAX(CASE WHEN column_name = ''',
            column_name,
            ''' THEN data END) AS ',
            column_name
        )
    ) INTO @sql
FROM
    your_table;
SET @sql = CONCAT('SELECT ', @sql, ' FROM your_table GROUP BY user_id');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
  • 代码解释:首先使用GROUP_CONCAT函数生成动态SQL语句,然后使用PREPARE语句准备动态SQL并执行,最后释放预处理语句。

步骤三:插入新表

INSERT INTO new_table(merged_data) VALUES ('合并后的数据');
  • 代码解释:将合并后的数据插入新表new_table的merged_data列中。

结尾

通过以上步骤,你可以成功将多行数据合并成一行多列,并存储到新表中。希望这篇文章对你有所帮助,如果有任何疑问,欢迎随时向我提问。加油!🚀