mysql 外链接 自连接

假设有两张表,分别为表a和表b,

a:

id    name  nick_name

1     张三      张三

2     李四       李

3      王五      王五

b:

id   age   a_id

1     23     1

2     56      3

3     18      4

内连接:至少一个表中匹配即可,相当于取a和b的交集

SELECT a.name,b.age FROM a INNER JOIN b ON a.id = b.a_id; 

结果:

name  age

张三    23

王五    56

左外连接:返回左表里所有的行,即使右表里没有匹配

SELECT a.name,b.age FROM a LEFT JOIN b ON a.id = b.a_id; 

name  age

张三    23

李四    null

王五    56

右外连接:返回右表里所有的行,即使左表里没有匹配

SELECT a.name,b.age FROM a RIGHT JOIN b ON a.id = b.a_id; 

name  age

张三    23

null     56

王五    56

全外连接:只要一个表里有即可,相当于取a,b的并集

SELECT * FROM a FULL JOIN b; 

id   name  id   age  a_id

1    张三    1    23    1
2    李四    1    23    1
3    王五    1    23    1
1    张三    2    56    3
2    李四    2    56    3
3    王五    2    56    3
1    张三    3    18    5
2    李四    3    18    5
3    王五    3    18    5

自连接:对a表进行自连接,即把一个表当做两个表来用

SELECT a1.name,a1.nick_name FROM a a1 INNER JOIN a a2 ON a1.name = a2.nick_name; 

name  nick_name

张三     张三

王五      王五

猜你喜欢

转载自blog.csdn.net/king2wang/article/details/83069649