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
1. left join 语句如下:
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
结果说明:(所影响的行数为第 5 行)
left join是以A表的记录为基础的,A表可以看成左表,B表可以看成右表,left join是以左表为准,左表(A)的记录会全部表示出来,而右表(B)只会显示符合条件(A.aID = B.bID)的记录。B表记录不符合条件的均为NULL。
2. right join 语句如下:
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
结果说明:(所影响的行数为 5 行)
right join 和 left join的结果相反,是以右表(B)为准,A表不符合条件的为NULL。
3. inner join 语句如下
SELECT * 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
结果说明:
inner join 显示符合条件(A.aID = B.bID)的所有记录。
转载请注明出处:BestEternity亲笔。