MySQL行转列
先准备两张表
-
学生表(student)
-
成绩表(achievement)
-
方式一
这种方式事先要查询到表头(语文,英语), 先准备好需要查询的表头,然否循环遍历表头
select t1.*, t2.score as '语文', t3.score as '英语' from student t1 left join achievement t2 on t1.id = t2.student_id and t2.course_name = '语文' left join achievement t3 on t1.id = t3.student_id and t3.course_name = '英语'
-
方式二
此种方式比较容易,很大众化的一种思路,也得事先准备好表头
select student_id, max( CASE course_name WHEN '语文' THEN score END ) '语文', max( CASE course_name WHEN '英语' THEN score END ) '英语' from achievement group by student_id
-
结果