mysql的left join、 right join和inner join

1.定义

left join:左联接,返回包括左表中的所有记录和右表中符合条件的记录。

right join:右联接,返回包括右表中的所有记录和左表中符合条件的记录。

inner join:等值联接,返回两个表中符合条件的记录。

2. 表的定义

表A记录如下:
aID     aNum             aheight
1     a20050111           170
2     a20050112           180
3     a20050113           172
4     a20050114           174
5     a20050115           175

表B记录如下:
bID     bName              bheight
1     2006032401           170
2     2006032402           170
3     2006032403           164
4     2006032404           165
8     2006032408           166

3.查询例子

3.1 left join 

select aID , aNum, BID, bName from A left join B  on A.aID = B.bID

结果如下:
aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404
5     a20050115    NULL     NULL

select aID, aheight, bID, bheight from A left join B  on A.aheight = B.bheight;

结果如下:

aID     aheight    bID    bheight

1          170         1         170

1          170         2         170

left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.
换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).
B表记录不足的地方均为NULL.

3.1 right join

right join和left join 刚好相反, 以右边的表为准, 右表将会全部显示出来,而左表只会显示符合条件的记录,不足的地方均为NULL。

3.2 inner join

inner join为等值联接,

select aID , aNum, BID, bName from A inner join B  on A.aID = B.bID

结果为:

aID     aNum     bID     bName
1     a20050111    1     2006032401
2     a20050112    2     2006032402
3     a20050113    3     2006032403
4     a20050114    4     2006032404

原文地址:https://www.cnblogs.com/Hxinguan/p/6341681.html