mysql查表记录合并
MYSQL数据表格式如下:每个学生有多个实验,
学号姓名实验代号 实验名称实验签到打分实验成绩
AA1 实验1 X X
AA2 实验2 X x
A A 3 实验3 X x
BB1 实验1 X X
BB2 实验2 X x
B B 3 实验3 X x
现在要查表,结果view要将同一个学生的所有实验的实验签到打分和实验成绩显示在一个记录中 如下:
序号学号姓名实验1成绩实验1签到打分实验2成绩实验2签到打分 实验3成绩实验3签到打分
1AA X X X Xx X
2BB X X X X X X
[解决办法]
SELECT 学号字段, GROUP_CONCAT( CONCAT(成绩字段, ' ', 打分字段) ) FROM table WHERE 1 GROUP BY 学号字段
[解决办法]
select 学号,姓名, max(if(实验代号=1,实验成绩,null)) as 实验1成绩, max(if(实验代号=1,实验签到打分,null)) as 实验1签到打分, max(if(实验代号=2,实验成绩,null)) as 实验2成绩, max(if(实验代号=2,实验签到打分,null)) as 实验2签到打分, max(if(实验代号=3,实验成绩,null)) as 实验3成绩, max(if(实验代号=4,实验签到打分,null)) as 实验3签到打分from MYSQL数据表格式如下group by 学号,姓名
[解决办法]
select 学号,姓名,case when 实验代号=1 then 实验成绩 end as 实验1成绩,case when 实验代号=1 then 实验签到打分 end as 实验1签到打分,case when 实验代号=2 then 实验成绩 end as 实验1成绩,case when 实验代号=2 then 实验签到打分 end as 实验1签到打分,case when 实验代号=3 then 实验成绩 end as 实验1成绩,case when 实验代号=3 then 实验签到打分 end as 实验1签到打分from tbgroup by 学号,姓名
[解决办法]
select 学号,姓名,
sum(if(实验代号=1,实验成绩,0)) as 实验1成绩,
sum(if(实验代号=1,实验签到打分,0)) as 实验1签到打分,
sum(if(实验代号=2,实验成绩,0)) as 实验2成绩,
sum(if(实验代号=2,实验签到打分,0)) as 实验2签到打分,
sum(if(实验代号=3,实验成绩,0)) as 实验3成绩,
sum(if(实验代号=4,实验签到打分,0)) as 实验3签到打分
from tt group by 学号,姓名
动态的参考
http://topic.csdn.net/u/20090530/23/0b782674-4b0b-4cf5-bc1a-e8914aaee5ab.html?99355
我的回答