sql同样查询结果,使用左连接还是内连接?

  • 业务: 举个列子,学生表,学生考勤记录表

  • 问题:查询考勤的时候要列出学生的基本信息

    • 主表: 考勤记录表 r_record 从表:学生表 t_student

    select * from t_record r,t_student s
    where s.id = r.stu_id
    select * from t_record r 
    left join t_student t on t.id = r.stu_id
  • 两种查询都可以返回想要的结果,但是学生信息可能在查询的时候已经被删除了,第一种查询就会有问题,而第二种仍能返回记录,但学生基本信息都没了,要记录也没实际意义, 想问下,在实际开发中,是改如何抉择呢?

阅读 3.2k
2 个回答

这个问题更多的要从需求看,希望得到什么样的结果。

从你说的场景推断,应该重点是看学生的考勤记录明细,那么应该在学生表有记录才有意义,因此内连接的方式就可以了。
如果是计算学生的考勤次数之类的统计报表,可能需要使用t_student left join t_record的方式,因为存在学生没有考勤记录的情况。

我想,如果你是查询考勤的情况而非学生的信息,可以用左连;如果你是想看看每个学生的考勤情况,那就用内连。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进