使用场景:
A表要跟B表连接查询,并且要输出A表中在B中无关联的数据,所以要通过A left join B,但是要查的数据B中没有,需要通过B中字段关联C表,从C中得来,A跟C没有直接关联,除了on 关联条件,还有额外的限制条件。
下面是sql实例:
select
A.userId,
A.userName,
A.email,
A.gender,
A.userRole,
B.classId,
C.className
from
A left join B
on A.userId = B.userId
left join C
on B.classId = C.classId
where
A.schoolId = #{schoolId}
and (
A.userRole = 1
or A.userRole = 10
)
我开始写的时候漏了第一个标记left,第二个标记where我写成了and,所以结果一直不对,虽然A没有直接join C,但是如果第二个不写成left join,那么关联之外的那部分数据就查不出来了。如果把where写成and,出来的结果也不正确。