表a
id | valueA |
---|---|
1 | 100 |
2 | 200 |
3 | 300 |
表b
id | valueB |
---|---|
1 | 一百 |
2 | 两百 |
300 | 三百 |
LEFT JOIN 左连接
select a.Id, a.valueA, b.id ,b.valueB from a left join b on a.id=b.id
a.id | valueA | b.id | valueB |
---|---|---|---|
1 | 100 | 1 | 一百 |
2 | 200 | 2 | 两百 |
3 | 300 | null | null |
左边表全部显示,右边表 sql语句on后面的条件满足的显示,不满足的全部填NULL
RIGHT JOIN 右连接
select a.Id, a.valueA, b.id ,b.valueB from a right join b on a.id=b.id
a.id | valueA | b.id | valueB |
---|---|---|---|
1 | 100 | 1 | 一百 |
2 | 200 | 2 | 两百 |
null | null | 300 | 三百 |
右边表全部显示,左边表sql语句on后面的条件满足的显示,不满足的全部填NULL。和左连接相反
INNER JOIN 内连接
select * from a inner join b on a.id=b.id
a.id | valueA | b.id | valueB |
---|---|---|---|
1 | 100 | 1 | 一百 |
2 | 200 | 2 | 两百 |
把on后面条件满足的所有数据显示出来,不满足不填null,不显示
注意
当两张表的数据不同条数,例如
改表b为
id | valueB |
---|---|
1 | 一百 |
2 | 两百 |
这样右连接的话
select a.Id, a.valueA, b.id ,b.valueB from a right join b on a.id=b.id
b.id | valueB | a.id | valueA |
---|---|---|---|
1 | 100 | 1 | 一百 |
2 | 200 | 2 | 两百 |
b表没有第三条数据,就不用把a表的第三条数据填null做显示了,左连接同理
一般用的
select * from a,b on a.id=b.id 写法和内连接是一样的
----------------------------------------------结束------------------------------------------