学生表: id,姓名,班级成绩表: student_id,成绩,我尝试的学科:
CREATE TABLE STUDENT(
ID int NOT NULL auto_increment PRIMARY KEY,
Name varchar(225),
Class varchar(225)
);
CREATE TABLE SCORES(
student_id int,
FOREIGN KEY (student_id) REFERENCES STUDENT(ID) ON DELETE CASCADE ON UPDATE CASCADE,
Score int,
Discipline varchar(225)
);
Select distinct st.name ,
case when sc.discipline='Mathematics' then sc.score
else 'NO SCORE'
end as Mathematics_score
from STUDENT st left join SCORES sc on st.id=sc.student_id ;结果:
name Mathematics_score
Liam NO SCORE
ANIA NO SCORE
ALEX NO SCORE
MAX 7
MAX NO SCORE
ANIA 9
ABC NO SCORE我需要改变的是,如果他们有数学成绩,我只显示一个名字一次。例如,MAX有数学和生物的等级,他在桌子上出现了两次谢谢,对不起,我的英语!
发布于 2021-06-03 20:07:10
试试这个:
Select distinct st.name, Coalesce(sc.score,"No Score") as Mathematics_score
from STUDENT st left join SCORES sc
on st.id=sc.student_id and
sc.discipline='Mathematics'连接将为每个学生恰好返回一行,要么是student Name| Score,要么是Student Name | NULL。Coalesce然后将NULL替换为“No Score”
https://stackoverflow.com/questions/67820732
复制相似问题