我在数据库中有一个包含两个三列的表ID, NAME, SUBJECT, SCORE
主题只有三个可能的值,math, physics,biology
并且每个值在分数字段中都有一个相应的分数。因为每个学生可以选修一门以上的课程,所以该NAME
列不是唯一的。
我想扩展表格,使每个主题的值都变成一列,所以我不再有主题和分数列,换句话说,我将有NAME, MATH,PHYSICS,BIOLOGY
数学物理和生物学的值是分数,NAME
然后列变成独特的
我目前通过使用查询来做到这一点
SELECT T1.NAME, T2.SCORE AS BIOLOGY, T3.SCORE AS PHYSICS, T4.SCORE AS MATH
FROM studenttable T1
LEFT JOIN studenttable T2
ON T1.ID = T2.ID AND T2.SUBJECT = 'biology'
LEFT JOIN studenttable T3
ON T1.ID = T3.ID AND T3.SUBJECT = 'physics'
LEFT JOIN studenttable T4
ON T1.ID = T4.ID AND T4.SUBJECT = 'math'
这似乎可行,但我想知道是否有更好的方法来实现这一目标?还是更整洁的方式?请告诉