美文网首页
mysql列转行

mysql列转行

作者: 潦倒神仙 | 来源:发表于2020-03-05 16:50 被阅读0次

需求:将表

id column
1 A,B,C
2 D,E

转为表

id column
1 A
1 B
1 C
2 D
2 E

新建表:test

DROP TABLE IF EXISTS `test`;
CREATE TABLE `test`  (
  `id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
  `c` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `test` VALUES ('1', 'A,B,C');
INSERT INTO `test` VALUES ('2', 'D,E');

新建表:seq

DROP TABLE IF EXISTS `seq`;
CREATE TABLE `seq`  (
  `id` int(11) NOT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `seq` VALUES (1);
INSERT INTO `seq` VALUES (2);
INSERT INTO `seq` VALUES (3);
INSERT INTO `seq` VALUES (4);

如图所示:


seq.png test.png

运行sql

SELECT
    t.id,
    SUBSTRING_INDEX( SUBSTRING_INDEX( t.c, ',', s.id ), ',', - 1 ) 
FROM
    test t
    JOIN seq s ON s.id <= ( LENGTH( t.c ) - LENGTH( REPLACE ( t.c, ',', '' ) ) + 1 )

可得


结果.png

相关文章

  • mysql 列转行

    mysql 的group_concat函数很好用,可以把列转成行。 SELECT threadid, group_...

  • mysql列转行

    需求:将表 idcolumn1A,B,C2D,E 转为表 idcolumn1A1B1C2D2E 新建表:test ...

  • MySQL简单的列转行

    一个字段有多个状态,统计不同状态下的数据利用CASE WHEN这种语法实现列转行的一个简单应用 结果

  • mysql列转行(逗号分隔)

    mysql查询含逗号的数据,将逗号拆分为多行展示: 原始数据如下: IDVALUE1yang,zheng,song...

  • MySQL行转列,列转行

    参考: MySQL行转列实现和总结 mysql中列转行,并多个字段转到一行中的一个字段上,中间用逗号分开 mysq...

  • mysql 列转行,合并字段

    数据表 列转行:利用max(case when then) 合并字段显示:利用group_cancat(cours...

  • MySql列转行的技巧

    转载地址:https://www.cnblogs.com/thomas12112406/p/5813394.htm...

  • mysql行转列,列转行

    一、行转列 即将原本同一列下多行的不同内容作为多个字段,输出对应内容。 建表语句 插入数据 查询数据表中的内容(即...

  • oracle列转行、列转行

    oracle列转行 SELECT REGEXP_SUBSTR('aa,bbb,cccc', '[^,]+', 1,...

  • mysql与pg列转行实现

    mysql实现下方sql暂时只支持固定数量的分隔符 gp/pg实现

网友评论

      本文标题:mysql列转行

      本文链接:https://www.haomeiwen.com/subject/yzfqrhtx.html