您的位置:首页 > 数据库 > MySQL

Mysql 行转列

2016-01-27 12:24 806 查看
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 usernametotalCN_SCOREMATH_SCORE EN_SCORE
1lisi227876575
2michale254789581
3xiaoxiao266977891
4zhangsan210805575
转换后:

usernametotalCOURSESCORE
lisi227语文87
lisi227英语75
lisi227数学65
michale254数学95
michale254英语81
michale254语文78
xiaoxiao266语文97
xiaoxiao266英语91
xiaoxiao266数学78
zhangsan210语文80
zhangsan210英语75
zhangsan210数学55
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: