left join左联接:返回左表所有记录即使在右表中没有匹配的记录,右表中没有匹配的记录就设为null
例子如下:
-----------------------------------------------------
PERSON表
IDp NUMBERp
1 011111
2 011112
3 011113
ORDER表
IDo ORDERNO IDp
1 77895 1
2 44678 1
3 23456 2
4 24562 2
查询:查出PERSON表中所有账号对应的所有订单ID(如果有的话)
select PERSON.IDp, ORDER.ORDERNO, ORDER.IDo from PERSON
left join ORDER on PERSON.IDp=ORDER.IDp
order by PERSON.IDp
结果集:
IDp ORDERNO IDo
1 77895 1
1 44678 2
2 23456 3
2 24562 4
3
由以上表可知,IDp=3的用户没有订单记录,从而其对应IDo和ORDERNO的查询结果为空,left join的查询结果返回左表(PERSON)所有行
right join右连接,返回右表内所有记录即使左表中没有匹配项
PERSON表
IDp NUMBERp
1 011111
2 011112
3 011113
ORDER表
IDo ORDERNO IDp
1 77895 1
2 44678 1
3 23456 2
4 24562 65
查询:查出所有订单和下订单的人
select ORDER.IDo, ORDER.ORDERNO, PERSON.IDp from PERSON
right join ORDER on PERSON.IDp=ORDER.IDp
order by PERSON.IDp
结果集:
IDo ORDERNO IDp
1 77895 1
2 44678 1
3 23456 2
4 24562
由结果集可知,返回内容中IDo=4 在PERSON表里没有对应记录,所以其IDp为空
总结:
left join:即使右表中没有匹配,也返回左表内的所有记录
right join:即使左表没有记录,也返回右表内所有记录
左右的区分以关键词为界