首页 > 数据库 >MYSQL将一行数据的多列值放到另一列的多个行中

MYSQL将一行数据的多列值放到另一列的多个行中

时间:2024-11-13 09:45:28浏览次数:1  
标签:行中 VARCHAR col5 WHEN col1 num MYSQL 多列 255

在MySQL中,如果你想要将一行数据的多列值放到另一列的多个行中,你可以使用一个辅助表(例如,使用nums表)来生成序列,然后与你的原始表进行联接。

比如下面一行一行数据,包含col1~col5总共5列,现在需要将这5类转换到一列中。

转换前的数据:

转换后的结果:

 

以下是一个示例:

首先,创建一个辅助的序列表:

CREATE TABLE nums (num INT);

INSERT INTO nums (num)
VALUES (1),(2),(3),(4),(5);

说明:根据需要转换的列数决定序列(比如需要转换5列,这里就插入5条数据)

然后,假设你有一个原始表original_table,它有多个列需要转换到多行:

CREATE TABLE original_table (
col1 VARCHAR(255),
col2 VARCHAR(255),
col3 VARCHAR(255),
col4 VARCHAR(255),
col5 VARCHAR(255)
);

INSERT INTO original_table (col1, col2, col3, col4, col5)
VALUES ('A', 'B', 'C', 'D', 'E');

 

现在,你可以使用下面的查询来将这些列值转换到多行:

SELECT
num,
CASE
WHEN num = 1 THEN  col1
WHEN num = 2 THEN  col2
WHEN num = 3 THEN  col3
WHEN num = 4 THEN  col4
WHEN num = 5 THEN  col5
END new_col
FROM
( SELECT 1 id, col1, col2, col3, col4, col5 FROM original_table ) T
INNER JOIN
( SELECT 1 id, num FROM nums ) T2 ON T.id = T2.id ;

 

这将输出如下结果:

请注意,这个例子中nums表只有5个数字,但在实际情况中,你可能需要更多的数字来匹配你要展开的列数。根据你的需求,你可能需要创建一个更大的序列表,或者使用其他方法来生成序列。

 

标签:行中,VARCHAR,col5,WHEN,col1,num,MYSQL,多列,255
From: https://www.cnblogs.com/yeyuzhuanjia/p/18543149

相关文章

  • MySQL 5.7.19 解压版安装配置详细教程
    MySQL5.7.19解压版安装配置详细教程1.软件下载首先,从MySQL官方网站下载MySQL5.7.19的解压版安装文件:下载地址:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-winx64.zip2.特别说明如果你之前安装过MySQL,并且出现了错误或者想要重新安装,可以使用以......
  • 基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现五
    一、前言介绍:免费获取:猿来入此1.1项目摘要随着信息技术的飞速发展和互联网的普及,教育领域正经历着深刻的变革。传统的面对面教学模式逐渐受到挑战,而在线课程学习教育系统作为一种新兴的教育形式,正逐渐受到广泛关注和应用。在线课程学习教育系统的出现,不仅为学生提供了更加灵......
  • 基于Java+SpringBoot+Mysql在线课程学习教育系统功能设计与实现六
    一、前言介绍:免费获取:猿来入此1.1项目摘要随着信息技术的飞速发展和互联网的普及,教育领域正经历着深刻的变革。传统的面对面教学模式逐渐受到挑战,而在线课程学习教育系统作为一种新兴的教育形式,正逐渐受到广泛关注和应用。在线课程学习教育系统的出现,不仅为学生提供了更加灵......
  • 25. 使用MySQL之使用触发器
    1.触发器MySQL语句在需要时被执行,存储过程也是如此。但是,如果你想要某条语句(或某些语句)在事件发生时自动执行,怎么办呢?例如:每当增加一个顾客到某个数据库表时,都检查其电话号码格式是否正确,州的缩写是否为大写;每当订购一个产品时,都从库存数量中减去订购的数量;无论何时删......
  • Mysql表分区实操
    创建分区表createtableuser(idint(11)notnull,namevarchar(32)notnull)partitionbyrange(id)(partitionp0valueslessthan(10),partitionp1valueslessthan(20),partitionp2valueslessthan(30),partitionp3valueslessthanmaxvalue)分区表数据......
  • Mysql大表处理方案:分区详解
    前言在我们日常处理海量数据的过程中,如何有效管理和优化数据库一直是一个既重要又具有挑战性的问题,较为通用的做法就是分区、分表、分库了。那我们应该如何选择这几种方式呢?下面本人记录以下几种方式的优劣,希望能够帮助到大家。首先分区:数据库中分区是将表或索引的数据划分成......
  • mysql修改/删除
    mysql增删改查中的改使用update表名set列名条件where;  matched是当前表有几行,changed是执行了几行,warnings是警告删除deleteform表名where条件;删除表里的某行信息 deletefrom表名;是删除整张表数据 ......
  • mysql创建表
    创建表创建表要先选中数据库名createtable表名(列名类型)来进行创建,列名可以存在多个,表名和列名不可以一样,想要一样的话就要使用反引号把表名和列名引起来列名在前面,类型在后面查看所有表showtables查看当前数据库所有表 查看指定表的结构desc表名;把表的特征描述出......
  • mysql查询
    全列查询使用select*from表名;把表中所有的行和列全部都查询出来  指定列查询select列名,列名from表名; 查询字段为表达式可以边查询边计算,查询的时候把列名构成的表达式,把这一列中的所有行都带入到表达式中进行运算,且操作的数据不会在更改原来的数据select列名......
  • Linux二进制安装 MySQL 5.7.44
    1.下载MySQL5.7.44的二进制文件首先,访问MySQL官网下载页面,选择适合你操作系统架构(如x86_64)的二进制安装包。访问官网:MySQLDownloads在页面中选择适合你系统的版本(比如Linux的 tar 包)。下载Mysql  https://download.csdn.net/download/m0_58223765/89975252例......