当左右表的交集与各自特有部分都需要保留的时候就需要执行全量查询
然而在Mysql 中并没有提供Full outer join 连接
需要使用Union查询2次,先使用left join 保留左边部分,再使用right join 保留右边部分
例如
select * from student A
left join classroom B on A.class_id=B.cid
union
select * from student A
right join classroom B on A.class_id=B.cid
查询结果如下:
Uid |
stuName |
Gender |
Classid |
Cid |
className |
001 |
Stu1 |
m |
1 |
1 |
php |
002 |
Stu2 |
w |
2 |
2 |
java |
003 |
Stu3 |
m |
4 |
4 |
javascript |
004 |
Stu4 |
w |
Null |
Null |
Null |
005 |
Stu5 |
m |
5 |
Null |
Null |
Null |
Null |
Null |
Null |
3 |
python |
即保留了student 表的所有记录,也保留了class 中的所有记录
注意:mysql 中没有 Full outer join 连接
全量查询在业务中常会用到,例如统计多个店铺销售与退货数量时,某个店铺当天有可能只有销售没有退货
也存在某些店铺当天只有退货没有销售的情况, 但各店铺的销售退货数据都需要保留时,就需要用到union
全量连接