有一个学生表{id,name} 课程表{id,cname,sid,source} 其中sid对应的是学生的id,一个学生有多个课程。
例如 :
张三{1,张三} 对应成绩 {1,高等数学,1,80},{2,大学物理,1,70},{3,大学英语,1,60}
李四{1,李四} 对应成绩 {1,高等数学,1,90},{2,大学物理,1,90},{3,大学英语,1,80}
现在想查询学生成绩信息
姓名,高等数学,大学物理,大学英语
张三 80 70 60
李四 90 90 80
用SQL如何实现
如果是 mssql 就用 pivot,如果是 mysql 就用 case when
百度一下 行转列即可
select name,(select source from kcb
where sid = s.id and id =1) shuxue,(select source from kcb where sid= s.id and id =2) wuli,(select source from kcb where sid=s.id and id =3) yingyu from xsb s
使用子查询
select name,(select source from course
where sid = s.id and cname='高等代数') 高等代数,(select source from course where sid= s.id and cname='大学物理') 大学物理,(select source from course where sid=s.id and cname
='大学英语') 大学英语 from student s