MySql列转行的技巧

MySql列转行的技巧,第1张

列转行:利用max(case when then)

`max``---聚合函数 取最大值`

`(`case course when '语文' then score else 0 end ) ---判断`

` as 语文``---别名作为列名`

mysql查询含逗号数据,将逗号拆分为多行展示: 原始数据如下: 现在因为新的需求,需要将这些数据转化为如下形式: 假设我们需要处理的表结构为: 使用如下sql语句即可实现需求: 查询的主要思路为,原表与一个包含连续自增长字段的表进行join,得到字符串分隔后的索引值,其中 length( a.name ) - length( REPLACE ( a.name, ',', '' ) ) + 1 语句获得字符串逗号分隔之后得到的数据长度,两表关联之后,会得到相应行数的数据。比如, 在join之后会得到: 之后对查询中的结果,使用substring_index方法进行截取,然后得到我们自己想要的数据。

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)是一个语句,中间没有分号,这个语句的结果就是你想要的结果。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7625956.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存