业务: 举个列子,学生表,学生考勤记录表
-
问题:查询考勤的时候要列出学生的基本信息
主表: 考勤记录表 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
两种查询都可以返回想要的结果,但是学生信息可能在查询的时候已经被删除了,第一种查询就会有问题,而第二种仍能返回记录,但学生基本信息都没了,要记录也没实际意义, 想问下,在实际开发中,是改如何抉择呢?
这个问题更多的要从需求看,希望得到什么样的结果。
从你说的场景推断,应该重点是看学生的考勤记录明细,那么应该在学生表有记录才有意义,因此内连接的方式就可以了。
如果是计算学生的考勤次数之类的统计报表,可能需要使用t_student left join t_record的方式,因为存在学生没有考勤记录的情况。