zoukankan      html  css  js  c++  java
  • Mysql group_concat函数列转行,与行转列

    1、正常情况。

    SELECT JoinEventIds from user

    2、使用group_concat函数得到列转行。

    select group_concat(JoinEventIds) from user

    3、使用SUBSTRING_INDEX和CROSS JOIN将列里面的的数字都拆分出来,把一行变成一列。

    方法一(网上查询的方法):

    建配置表:

    复制代码
        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 (
            SELECT
                D1.digit + D2.digit * 10
            FROM
                digits D1
            CROSS JOIN digits D2
        );
    复制代码

    配置表sequence的结果为0-99的一列数字:

    SQL:

    复制代码
    SELECT
        SUBSTRING_INDEX(
            SUBSTRING_INDEX(JoinEventIds, ',', seq),
            ',' ,- 1
        ) JoinEventIds
    FROM
        sequence
    CROSS JOIN user
    WHERE
        seq BETWEEN 1
    AND (
        SELECT
            1 + LENGTH(JoinEventIds) - LENGTH(
                REPLACE (JoinEventIds, ',', '')
            )
    )
    复制代码

    方法二(自己不想建表,图省事):将sequence替换为SELECT @rownum:=@rownum+1 AS seq FROM (SELECT @rownum:=0) r, user  LIMIT 0,100) ,user为表名,这张表需要大于100条。

    复制代码
    SELECT  SUBSTRING_INDEX(
                SUBSTRING_INDEX(JoinEventIds, ',', seq),
                ',' ,- 1
            ) JoinEventIds
        FROM
            (SELECT @rownum:=@rownum+1 AS seq FROM (SELECT @rownum:=0) r, user  LIMIT 0,100) b
        CROSS JOIN user
        WHERE
            seq BETWEEN 1
        AND (
            SELECT
                1 + LENGTH(JoinEventIds) - LENGTH(REPLACE(JoinEventIds, ',', ''))) 
    复制代码

    两种方法结果均为:

  • 相关阅读:
    如何闪开安装VS2013必须要有安装IE10的限制
    Java从键盘输入
    Java基本数据类型和关键字
    openssl windows编译 32位&64位
    eclipse代码提示配置
    手动启动Android模拟器
    Android编程中的实用快捷键
    pat1023. Have Fun with Numbers (20)
    pat1022. Digital Library (30)
    pat1020. Tree Traversals (25)
  • 原文地址:https://www.cnblogs.com/cxxjohnson/p/6725932.html
Copyright © 2011-2022 走看看