【问题标题】:Combine data and non data rows in SQL在 SQL 中合并数据和非数据行
【发布时间】:2023-03-27 20:50:02
【问题描述】:

表格:标记 M [Id,主题,标记]

测试学生 ID:100、101

要求:我们需要'数学'科目的两个学生的分数。 条件:学生(101)没有参加数学考试。所以学生 101 的 Mark 表中不会有任何记录。

预期结果:

Student ID Subject Mark
100        Maths   45
101        Maths   0

即我们需要为学生 101 添加一个 Subject=Maths 和 Mark=0 的附加行

提前致谢

【问题讨论】:

  • 编辑问题添加一些示例数据和所需的结果会有所帮助。

标签: sql join


【解决方案1】:

您可以尝试使用左连接

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

【讨论】:

    【解决方案2】:

    你可以使用左连接

     select  s.*, m.*
     from  student s 
     left join Mark  m  on m.Id = s.id
    

    如果值不匹配,左连接也检索行

    【讨论】:

      【解决方案3】:

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

      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';
      

      【讨论】:

        猜你喜欢
        • 2014-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-29
        • 2019-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多