在SQL

时间:2019-01-15 10:01:33

标签: sql join

表格:Mark M [Id,Subject,Mark]

测试学生ID:100、101

要求:我们需要两个主题为“数学”的学生的成绩。 条件:学生(101)缺席数学考试。这样在Mark表中就不会有任何学生101的记录。

预期结果:

Student ID Subject Mark
100        Maths   45
101        Maths   0

即我们需要为学生101添加另一行,其中Subject = Maths和Mark = 0。

预先感谢

3 个答案:

答案 0 :(得分:0)

您可以尝试使用左联接

select * from students a left join marks b
on a.studentid=b.studentid

答案 1 :(得分:0)

您可以使用左联接

 select  s.*, m.*
 from  student s 
 left join Mark  m  on m.Id = s.id
如果值不匹配,还

左连接检索行

答案 2 :(得分:0)

假设您有多个学科,并且只对数学感兴趣,那么您在过滤时需要小心:

select s.*, 'Maths' as subject, coalesce(m.mark, 0) as mark
from student s left join
     mark m
     on m.Id = s.id and m.subject = 'Maths';