本文实例讲述了mysql横纵表相互转化操作实现方法。分享给大家供大家参考,具体如下:
先创建一个成绩表(纵表)
1
2
3
4
5
6
7
8
9
10
11
|
create table user_score
(
name varchar (20),
subjects varchar (20),
score int
);
insert into user_score( name ,subjects,score) values ( '张三' , '语文' ,60);
insert into user_score( name ,subjects,score) values ( '张三' , '数学' ,70);
insert into user_score( name ,subjects,score) values ( '张三' , '英语' ,80);
insert into user_score( name ,subjects,score) values ( '李四' , '语文' ,90);
insert into user_score( name ,subjects,score) values ( '李四' , '数学' ,100);
|
再创建一个成绩表(横表)
1
2
3
4
5
6
7
8
9
|
create table user_score2
(
name varchar (20),
yuwen int ,
shuxue int ,
yingyu int
);
insert into user_score2( name ,yuwen,shuxue,yingyu) values ( '张三' ,60,70,80);
insert into user_score2( name ,yuwen,shuxue,yingyu) values ( '李四' ,90,100,0);
|
纵表转横表
1
2
3
4
|
select name , sum ( case subjects when '语文' then score else 0 end )
as '语文' , sum ( case subjects when '数学' then score else 0 end )
as '数学' , sum ( case subjects when '英语' then score else 0 end )
as '英语' from user_score group by name ;
|
纵表转横表
1
2
3
4
|
select name , 'yuwen' as subjects,yuwen as score from user_score2 union all
select name , 'shuxue' as subjects,shuxue as score from user_score2 union all
select name , 'yingyu' as subjects,yingyu as score from user_score2
order by name ,subjects desc ;
|
希望本文所述对大家MySQL数据库计有所帮助。
原文链接:https://blog.csdn.net/huangyuxin_/article/details/79678719