需求

需要将如下所示原始表数据转为结构化的数据按行显示:

转为结构化数据:

解决方法

如果是单条记录通过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 列转行用法实现相关推荐

  1. MYSQL 列转行方法

    MYSQL 列转行方法 目标 上周遇到个业务场景,要求把一列中用分隔符连接的数据,通过分隔符转多行,形如: 转为 准备 表结构 CREATE TABLE `t_tag` (`id` int NOT N ...

  2. mysql 分组 列转行,mysql列转行以及年月分组_MySQL

    bitsCN.com mysql列转行以及年月分组 Java代码 SELECT count(DISTINCT(a.rect_id)) zcount, a.job_dept, DATE_FORMAT(s ...

  3. mysql 分组 列转行,mysql列转行以及年月分组实例

    如下所示: SELECT count(DISTINCT(a.rect_id)) zcount, a.job_dept, DATE_FORMAT(submit_date, '%Y-%m') zsubmi ...

  4. mysql 列转行union all_MySQL中的列转行 - osc_qheq8wav的个人空间 - OSCHINA - 中文开源技术交流社区...

    mysql中的列转行 在工作中遇到的一个MySQL列转行的统计: 场景 用户访问app时会跳出标签选择页面让用户选择喜欢的标签,在数据库中记录的是数组样式的字符串,数据样式大致如下: id user_ ...

  5. mysql列转行统计查询_Mysql 列转行统计查询 、行转列统计查询

    Mysql group_concat函数列转行,与行转列 例一: SELECT num from user 1.使用group_concat函数得到列转行 select group_concat(nu ...

  6. 不使用union实现Mysql 列转行

    最近工作上用到了 mysql列转行,网上找了一堆大多数都是行转列的方法,对于列转行这块,仅找到了union这一种方式,偏偏工作环境的数据库版本较低不支持临时表,使用union方式写起来又过于笨重,所以 ...

  7. mysql列转行(行用字符串连接

    mysql列转行(行用字符串连接) 原来的数据 转换后的 SELECT user_Id,GROUP_CONCAT(POST_CODE)AS POST_CODE FROM rh_persion_post ...

  8. mysql 分组 列转行,mysql 列转行以及岁月分组

    SELECT count(DISTINCT(a.rect_id)) zcount, a.job_dept, DATE_FORMAT(submit_date, '%Y-%m') zsubmit_date ...

  9. 数据库:SQLServer 实现行转列、列转行用法笔记

    在许多的互联网项目当中,报表开发是整个项目当中很重要的一个功能模块.其中会有一些比较复杂的报表统计需要行转列或者列转行的需求.今天给大家简单介绍一下在SQLServer当中如何使用PIVOT.UNPI ...

最新文章

  1. inline-block 间距
  2. [转]多线程编程指南
  3. 如何将struct System.Byte byte []转换为C#中的System.IO.Stream对象?
  4. python中赋值语句的作用_python中return可以使用赋值语句吗?
  5. asterisk1.8 for mipsel mysql
  6. 【HDU - 6447】YJJ's Salesman(降维dp,树状数组优化dp)
  7. maven ssm框架 mysql_SSM框架(IDEA+Spring+SpringMVC+Maven+Mybatis+MySQL)
  8. duilib list控件扩展
  9. IIS执行ASP程序不能调用数据库出现500错误的解决方法
  10. 编写c语言程序的可视化编程环境有哪些,C语言可视化编程环境设计及实现.pdf
  11. 【C++】指针与引用的区别
  12. ssh 多台服务器之间连接(linux)
  13. 写给想学 Javascript 朋友的一点经验之谈
  14. 算法导论适合c语言吗,看《算法导论》需要多好的数学基础?
  15. html背景音乐自动播放embed,HTML插入背景音乐方法【全】
  16. Android P 源码分析 5 - Low memory killer 之 lmkd 守护进程
  17. 本地机房连接阿里云专有网络VPC构建混合云解决方案
  18. 四川教师职称计算机考试试题,四川省中小学教师职称计算机应用能力考试、外语免试审批表.doc...
  19. uni-app优秀的Ui模板和项目案列
  20. 写一副对子_一副对子的传奇故事

热门文章

  1. 数据结构-二叉排序树(图文详细版)
  2. CG12 Maya历法
  3. Php laravel 队列,Laravel 的队列系统介绍
  4. JavaScript学习之大小写转换
  5. js字符串的大小写转换函数
  6. Xcode 免证书开发调试(结合网上资料整理)
  7. xampp中mysql3306端口被占用
  8. BZOJ4883: [Lydsy2017年5月月赛]棋盘上的守卫
  9. Java实现之动态规划算法
  10. html实现富文本编辑器,前端程序员福利,6款轻量级富文本编辑器,轻松实现富文本编辑...