各位用户为了找寻关于MySQL横纵表相互转化操作实现方法的资料费劲了很多周折。这里教程网为您整理了关于MySQL横纵表相互转化操作实现方法的相关资料,仅供查阅,以下为您介绍关于MySQL横纵表相互转化操作实现方法的详细内容
本文实例讲述了mysql横纵表相互转化操作实现方法。分享给大家供大家参考,具体如下:
先创建一个成绩表(纵表)
? 1 2 3 4 5 6 7 8 9 10 11create
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 9create
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 4select
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 4select
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