• 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, ',', ''))) 
    复制代码

    两种方法结果均为:

  • 相关阅读:
    LeetCode: Tags-[Array], Difficulty-[Medium]
    J2SE 常用方法
    LeetCode: Tags-[Array], Difficulty-[Easy]
    Java Code Style 记录
    LintCode 1-30;
    Android在线程中发送GET和POST请求 在主线程更新UI
    Android中intent启动Activity中intent.setFlags()的作用
    源码备份 listview
    android数据库操作
    android 验证二
  • 原文地址:https://www.cnblogs.com/cxxjohnson/p/6725932.html
Copyright © 2020-2023  润新知