对新人来说,有些容易混淆却又是新东西的时候,往往第一印象没有深深的扎根之后,以后就会经常混淆,比如sql的左右内连接问题,有些人老是分不清到底是左还是右还是用内连接。再次本人将用通俗易懂的方法分享给大家容易记住的东西。
例子: a表 id name b表 id job parent_id 1 张3 1 23 1 2 李四 2 34 2 3 王武 3 34 4
这里,可以看到a,b两张表是通过主外键id,parent_id关联的。
a表,id有1,2,3
b表,parent_id就是对应a表的id 有1,2,4
1、内连接语句
select a.*,b.* from a inner join b on a.id=b.parent_id
查询结果
1 张3 1 23 1 2 李四 2 34 2
总结:内连接其实就是把两张表相同的东西,也就是说都有的东西相匹配。
2、左连接语句
select a.*,b.* from a left join b on a.id=b.parent_id 查询结果 1 张3 1 23 1 2 李四 2 34 2 3 王武 null
总结:aleft join b 我们可以这里理解a在b的左边,就是说以a(left那个为主)为主,a中的满足条件的全部显示,在b中没匹配的全部用null代替。
3、右连接语句
select a.*,b.* from a right join b on a.id=b.parent_id 查询结果 1 张3 1 23 1 2 李四 2 34 2 null 3 34 4
总结:与左连接正好相反。a rightjoin b 我们可以这里理解a在b的右边,就是说以b(right那个为主)为主,b中的满足条件的全部显示,在a中没匹配的全部用null代替。
4、全连接语句
select a.*,b.* from a full join b on a.id=b.parent_id查询结果 1 张3 1 23 1 2 李四 2 34 2 null 3 34 4 3 王武 null
总结:这个可以理解成左右连接的综合。所有满足条件的记录全部显示,对应表中没有的全部用null代替。