三表连接经常做的都是两两之间关联,尝试了一下两张表同时关联到一张表,结果和预期想的一样,当主表t1关联第二表t2时,t2中不存在与t1的code相等的情况下为null,在t1再关联t3时,t3中不存在与t1的code相等的情况下为null
下面是左关联的情况
select a.,b.,c.*
from t1 a left join t2 b on a.alarm_code=b.alarm_code
left join t3 c on a.alarm_code=c.alarm_code
下面是直接相等来做链接的情况
select a.,b.,c.* from t1 a , t2 b, t3 c where a.alarm_code=b.alarm_code and a.alarm_code=c.alarm_code
结果大不相同
原因是直接相等的情况是只查询出两个表where字段相等的记录,
当只关联t1和t2时
select a.,b. from t1 a , t2 b where a.alarm_code=b.alarm_code
在这个结果基础上,可以把这个结果看成另外生成的t1表,再去链接t3时
select a.,b.,c.*
from t1 a , t2 b, t3 c
where a.alarm_code=b.alarm_code and a.alarm_code=c.alarm_code
在t1和t3相等的记录仅剩下2,因为code3并不在后来生成的t1表中