zoukankan      html  css  js  c++  java
  • Mysql 行转列

    1. 创建表:

    create table tb(
    ID int,
    username varchar(20),
    CN_SCORE float,
    MATH_SCORE float,
    EN_SCORE float
    );

    2. 插入数据:

    INSERT INTO tb values(1,'lisi',87,65,75);
    INSERT INTO tb values(2,'michale',78,95,81);
    INSERT INTO tb values(3,'xiaocxiao',97,78,91);
    INSERT INTO tb values(4,'zhangsan',80,55,75));

    3. 补数据,添加个total:

     alter table tb add column total float after username;

    update tb set total=(CN_SCORE+MATH_SCORE+EN_SCORE) WHERE ID IN(1,2,3,4);

    或下面的形式:

    UPDATE test
      SET name = CASE id
        WHEN 1 THEN 3
        WHEN 2 THEN 4
        WHEN 3 THEN 5
      END
    WHERE id IN (1,2,3)

    4. 开始列转行:

    select username, total, '语文' COURSE, CN_SCORE as SCORE from tb
    union
    select username, total,'数学' COURSE, MATH_SCORE as SCORE from tb
    union
    select username,total, '英语' COURSE, EN_SCORE as SCORE from tb
    order by username,COURSE;

    ID  username total CN_SCORE  MATH_SCORE  EN_SCORE
    1 lisi 227 87 65 75
    2 michale 254 78 95 81
    3 xiaoxiao 266 97 78 91
    4 zhangsan 210 80 55 75

    转换后:

    username total COURSE SCORE
    lisi 227 语文 87
    lisi 227 英语 75
    lisi 227 数学 65
    michale 254 数学 95
    michale 254 英语 81
    michale 254 语文 78
    xiaoxiao 266 语文 97
    xiaoxiao 266 英语 91
    xiaoxiao 266 数学 78
    zhangsan 210 语文 80
    zhangsan 210 英语 75
    zhangsan 210 数学 55
  • 相关阅读:
    概率论中几个入门公式
    记一道贝叶斯公式的裸题
    BZOJ3585: mex(主席树)
    利用MingW检验程序运行内存
    清北集训Day3T1(转换)
    万能pb_ds头文件—bits/extc++.h
    清北集训Day1T3 LYK loves jumping(期望DP)
    洛谷P1962 斐波那契数列(矩阵快速幂)
    namespace用法
    BZOJ4868: [Shoi2017]期末考试
  • 原文地址:https://www.cnblogs.com/wujixing/p/5162821.html
Copyright © 2011-2022 走看看