1. 程式人生 > >mysql 外連結 自連線

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

張三     張三

王五      王五