mysql 外連結 自連線
阿新 • • 發佈:2018-12-15
假設有兩張表,分別為表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
張三 張三
王五 王五