mysql列转行怎么转 mysql怎么把列变成行

mysql中列转行 , 并多个字段转到一行中的一个字段上 , 中间用逗号分开select ID,group_concat(NAME) as NAME from table group by ID;
select ID,group_concat(NAME SEPARATOR ';') as NAME from a group by ID;
如何把mysql的列修改成行显示数据简单实现import_table(importTable) 的延申功能:可定制化行输入 。
import_table(importTable) 我们之前有介绍过 , 是一款并行导入各种格式文本的工具,封装了 MySQL 语句 load data local infile 。
比如说要导入一个以 TAB 为分隔符的文本数据文件:/tmp/sample_ytt.txt 到表:ytt_new.t1,可以执行下面语句:
上面结果是 load data infile 语句的导入结果 。如果改用 import_table 方法来做同样的事情 , 基于 Python 语法,使用方法如下:
那接下来看另外一个需求:在导入文本文件时对每行做预处理(例如在导入数据之前更改列 r2 的值为 mod(r1,10),列 r5 的值为 abs(r4-46) ),这样可以减少导入后再次处理的时间开销 。
这个需求用 load data infile 语句非常容易实现:(导入时更改列 r2 和 r5 的数据,类似 UPDATE 语法)
那如果要用 util.import_table(importTable) 来实现上面的需求,在 MySQL 8.0.22 之前是没办法的 。
随着 MySQL 8.0.22 的发布,MySQL 对 import_table 方法做了些扩充功能,其中增加了一个选项 “decodeColumns” 可以实现字段的预先输入定制化功能 , 并且还可以更加丰富 。
接下来用 import_table 来实现上面的需求,定制化字段 r2 和 r5:
以上 Options 选项,见下图:
我来具体解释下上图的含义:蓝色字体 columns 对应的数组分别指定数据文件中的每行字段,也就是默认的 TAB 分隔符所分割的每列值,1 和 2 代表占位符 , 1 代表数据文件中每行的第一个列,2 代表数据文件中每行的第四列 , decodeColumns 字典分别对需要预先输入的字段做处理 。比如 r1 字段保留为变量 @1,r2 字段对应 mod(r1,10) 等 。
如果还是不太理解变换规则,可以临时打开 general log , 上面 import_table(importTable)对应的 MySQL 日志为:
【mysql列转行怎么转 mysql怎么把列变成行】以上日志写的很清楚,内部转换为最基本的load data infile语法 。
那这里我简单解读了下 MySQL 8.0.22 对 MySQL Shell 的一项定制化输入文本文件的新特性,更多的新特性可以继续关注 。
mysql 行列转换怎么写?set @i =0;
create table 新表
AS
select@i:=@i 1 as NO,NO1,NO2,NO3,MYA1 as MM
from(
selectNO1,NO2,'MYA1 ' as NO3,MYA1from表
unionall
selectNO1,NO2,'MYA2 ',MYA2from表
unionall
selectNO1,NO2,'MYA3 ',MYA3from表
unionall
selectNO1,NO2,'MYA4 ',MYA4from表
unionall
selectNO1,NO2,'MYA5 ',MYA5from表
unionall
selectNO1,NO2,'MYA6 ',MYA6from表
)aorderbyNO1,NO2;
select*from新表;
MySql列转行的技巧列转行mysql列转行怎么转:利用max(case when then)
`max``---聚合函数 取最大值`
`(`casecourse when'语文'thenscore else0 end ) ---判断`
` as 语文``---别名作为列名`
mysql 列转行select typeId,value1 from 表
union
select typeId,value2 from 表
union
select typeId,value3 from 表
union
select typeId,value4 from 表
........
union
select typeId,value10 from 表
注意,以上共19行(10行select、9行union)是一个语句 , 中间没有分号,这个语句的结果就是你想要的结果 。
mysql列转行(逗号分隔)mysql查询含逗号的数据,将逗号拆分为多行展示:
原始数据如下:
现在因为新的需求,需要将这些数据转化为如下形式:
假设我们需要处理的表结构为:
使用如下sql语句即可实现需求:
查询的主要思路为,原表与一个包含连续自增长字段的表进行join,得到字符串分隔后的索引值 , 其中 length( a.name ) - length( REPLACE ( a.name, ',', '' ) )1 语句获得字符串逗号分隔之后得到的数据长度,两表关联之后,会得到相应行数的数据 。比如,
在join之后会得到:
之后对查询中的结果,使用substring_index方法进行截取,然后得到我们自己想要的数据 。
关于mysql列转行怎么转和mysql怎么把列变成行的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读