MySQL 列转行用法实现
需求
需要将如下所示原始表数据转为结构化的数据按行显示:
转为结构化数据:
解决方法
如果是单条记录通过SUBSTRING_INDEX容易实现,SQL语句如下:
select name,SUBSTRING_INDEX(accounts,',',1) account from personAccounts where id=1
UNION
select name,SUBSTRING_INDEX(SUBSTRING_INDEX(accounts,',',2),',',-1) account from personAccounts where id=1
UNION
select name,SUBSTRING_INDEX(SUBSTRING_INDEX(accounts,',',3),',',-1) account from personAccounts where id=1
查询结果如下:
对于数据很多的话需要借助中间表来实现:
CREATE TABLE digits (digit INT(1));
INSERT INTO digits
VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
-- 创建序列表
CREATE TABLE sequence (seq INT(3));
INSERT INTO sequence (SELECTD1.digit + D2.digit * 10FROMdigits D1CROSS JOIN digits D2
);
查询列转为行的语句如下:
SELECT NAME,SUBSTRING_INDEX(SUBSTRING_INDEX(accounts, ',', seq), ',' ,- 1 ) accounts,seq
FROMsequence
CROSS JOIN personAccounts
WHEREseq BETWEEN 1 AND (SELECT 1 + LENGTH(accounts) - LENGTH(REPLACE(accounts, ',', '')))
ORDER BY name, accounts;
结果如下:
参考:
Mysql group_concat的反向应用实现(Mysql列转行)
MySQL 列转行用法实现相关推荐
- MYSQL 列转行方法
MYSQL 列转行方法 目标 上周遇到个业务场景,要求把一列中用分隔符连接的数据,通过分隔符转多行,形如: 转为 准备 表结构 CREATE TABLE `t_tag` (`id` int NOT N ...
- mysql 分组 列转行,mysql列转行以及年月分组_MySQL
bitsCN.com mysql列转行以及年月分组 Java代码 SELECT count(DISTINCT(a.rect_id)) zcount, a.job_dept, DATE_FORMAT(s ...
- mysql 分组 列转行,mysql列转行以及年月分组实例
如下所示: SELECT count(DISTINCT(a.rect_id)) zcount, a.job_dept, DATE_FORMAT(submit_date, '%Y-%m') zsubmi ...
- mysql 列转行union all_MySQL中的列转行 - osc_qheq8wav的个人空间 - OSCHINA - 中文开源技术交流社区...
mysql中的列转行 在工作中遇到的一个MySQL列转行的统计: 场景 用户访问app时会跳出标签选择页面让用户选择喜欢的标签,在数据库中记录的是数组样式的字符串,数据样式大致如下: id user_ ...
- mysql列转行统计查询_Mysql 列转行统计查询 、行转列统计查询
Mysql group_concat函数列转行,与行转列 例一: SELECT num from user 1.使用group_concat函数得到列转行 select group_concat(nu ...
- 不使用union实现Mysql 列转行
最近工作上用到了 mysql列转行,网上找了一堆大多数都是行转列的方法,对于列转行这块,仅找到了union这一种方式,偏偏工作环境的数据库版本较低不支持临时表,使用union方式写起来又过于笨重,所以 ...
- mysql列转行(行用字符串连接
mysql列转行(行用字符串连接) 原来的数据 转换后的 SELECT user_Id,GROUP_CONCAT(POST_CODE)AS POST_CODE FROM rh_persion_post ...
- mysql 分组 列转行,mysql 列转行以及岁月分组
SELECT count(DISTINCT(a.rect_id)) zcount, a.job_dept, DATE_FORMAT(submit_date, '%Y-%m') zsubmit_date ...
- 数据库:SQLServer 实现行转列、列转行用法笔记
在许多的互联网项目当中,报表开发是整个项目当中很重要的一个功能模块.其中会有一些比较复杂的报表统计需要行转列或者列转行的需求.今天给大家简单介绍一下在SQLServer当中如何使用PIVOT.UNPI ...
最新文章
- inline-block 间距
- [转]多线程编程指南
- 如何将struct System.Byte byte []转换为C#中的System.IO.Stream对象?
- python中赋值语句的作用_python中return可以使用赋值语句吗?
- asterisk1.8 for mipsel mysql
- 【HDU - 6447】YJJ's Salesman(降维dp,树状数组优化dp)
- maven ssm框架 mysql_SSM框架(IDEA+Spring+SpringMVC+Maven+Mybatis+MySQL)
- duilib list控件扩展
- IIS执行ASP程序不能调用数据库出现500错误的解决方法
- 编写c语言程序的可视化编程环境有哪些,C语言可视化编程环境设计及实现.pdf
- 【C++】指针与引用的区别
- ssh 多台服务器之间连接(linux)
- 写给想学 Javascript 朋友的一点经验之谈
- 算法导论适合c语言吗,看《算法导论》需要多好的数学基础?
- html背景音乐自动播放embed,HTML插入背景音乐方法【全】
- Android P 源码分析 5 - Low memory killer 之 lmkd 守护进程
- 本地机房连接阿里云专有网络VPC构建混合云解决方案
- 四川教师职称计算机考试试题,四川省中小学教师职称计算机应用能力考试、外语免试审批表.doc...
- uni-app优秀的Ui模板和项目案列
- 写一副对子_一副对子的传奇故事