这几个join实际运用中容易产生问题,特此备忘。
A left join B ,对于on 的条件中,如果有A的限制条件,是不会对A有限制作用的。如果有B的限制条件,就会对B产生限制作用。A为主表,如果没有where条件限制,所以A的全表记录都会显示。
对cross join,不需要有限制条件,这会产生笛卡尔积。
对full join,相当于left join+rightjoin,所以on的条件中,如果有对A、B的限制,将不会有效,如果需要限制,只能采用(select * from A where a='a')A join (select * from B where b='b')B on ....
另外,
表1
left join
表2
从而记录了表2一列,而不影响表1的数据
有时也可以对一个表join 2次,比如字典表的2列,会得到这2列对应的关联表值