sql的几种常见join详解
测试表
test1: test2:
----------------- -----------------
| id | name | | id | age |
----------------- -----------------
| 1 | sxc | | 1 | 18 |
----------------- -----------------
| 3 | sb | | 2 | 12 |
----------------- -----------------
| 4 | dsb | | 3 | 10 |
----------------- -----------------
INNER JOIN(内连接)
内连接返回的是两张表的交集部分,返回的是匹配上的行。 示例:
select * from test1 t1
inner join test2 t2
on t1.id = t2.id
返回结果:
--------------------------
| id | name | age |
--------------------------
| 1 | sxc | 18 |
--------------------------
| 3 | sb | 10 |
--------------------------
LEFT JOIN (左连接)
左连接返回的是左表的全部行和右表满足ON条件的行,如果左表的行在右表中没有匹配,那么这一行右表中对应数据用NULL代替。示例:
select * from test1 t1
left join test2 t2
on t1.id = t2.id
返回结果:
--------------------------
| id | name | age |
--------------------------
| 1 | sxc | 18 |
--------------------------
| 3 | sb | 10 |
--------------------------
| 4 | dsb | null |
--------------------------
RIGHT JOIN (右连接)
右连接返回的是右表的全部行和左表满足ON条件的行,如果右表的行在左表中没有匹配,那么这一行左表中对应数据用NULL代替。示例:
select * from test1 t1
rigth join test2 t2
on t1.id = t2.id
返回结果:
--------------------------
| id | name | age |
--------------------------
| 1 | sxc | 18 |
--------------------------
| 2 | null | 12 |
--------------------------
| 3 | sb | 10 |
--------------------------
FULL OUTER JOIN
FULL JOIN 会从左表 和右表 那里返回所有的行。如果其中一个表的数据行在另一个表中没有匹配的行,那么对面的数据用NULL代替
select * from test1 t1
rigth join test2 t2
on t1.id = t2.id
返回结果:
略
总结
so easy!!!