转载加工自:https://www.cnblogs.com/assasion/p/7768931.html
SQL的JOIN连表查询一共有7种,这里给出了各种连接的用法图解与示例:
一、sql的left join 、right join 、inner join之间的区别
left join左联接()/返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行
表A记录如下:
aID aNum
1 a20050111
2 a20050112
3 a20050113
4 a20050114
5 a20050115
表B记录如下:
bID bName
1 2006032401
2 2006032402
3 2006032403
4 2006032404
8 2006032408
**
**
sql语句如下:
select * 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
**
**
sql语句如下:
select * from A
right 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
NULL NULL 8 2006032408
**
**
sql语句如下:
select * from A
innerjoin 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
这里再给几个其他连接的例子:
**
**
sql语句如下:
select * from A
FULL OUTER JOIN B
on A.aID = B.bID
**
**
sql语句如下:
select * from A
LEFT JOIN B
on A.aID=B.bID
where B.bID IS NULL
**
**
sql语句如下:
select * from A
right join B
on A.aID = B.bID
where A.aID IS NULL
结果如下:
aID aNum bID bName
NULL NULL 8 2006032408
**
**
sql语句如下:
select * from A
FULL OUTER JOIN b
on A.aID = B.bID
where A.KEY IS NULL OR B.KEY IS NULL
结果如下:
aID aNum bID bName
NULL NULL 8 2006032408
5 a20050115 NULL NULL
https://www.cnblogs.com/zhaodagang8/articles/10642723.html
这个网站给出了用法的图解形式,方便理解。