一、 JOIN 按照功能大致分為如下三類:
- INNER JOIN(內連接,或等值連接):獲取兩個表中字段匹配關系的記錄。
- LEFT JOIN(左連接):獲取左表所有記錄,即使右表沒有對應匹配的記錄。
- RIGHT JOIN(右連接): 與 LEFT JOIN 相反,用於獲取右表所有記錄,即使左表沒有對應匹配的記錄。
二、join 使用實例
1、准備兩張表
mysql> select * from person; +----+------+------+ | id | name | age | +----+------+------+ | 3 | Mili | 21 | | 4 | tom | 19 | | 5 | mike | 18 | | 6 | aaa | 17 | | 7 | bbb | 16 | | 8 | ccc | 22 | | 9 | ddd | 23 | | 10 | eee | 25 | +----+------+------+ 8 rows in set (0.00 sec)
mysql> select * from account; +----+---------+ | id | account | +----+---------+ | 1 | 22 | | 2 | 23 | | 3 | 11 | | 4 | 12 | | 5 | 13 | | 6 | 666 | +----+---------+ 6 rows in set (0.00 sec)
inner join 用法(內連接)以及實例:
mysql> select a.*,b.* from person a inner join account b on a.id=b.id; // select * from person a,account b where a.id=b.id;與左側的inner join效果一樣; +----+------+------+----+---------+ | id | name | age | id | account | +----+------+------+----+---------+ | 3 | Mili | 21 | 3 | 11 | | 4 | tom | 19 | 4 | 12 | | 5 | mike | 18 | 5 | 13 | | 6 | aaa | 17 | 6 | 666 | +----+------+------+----+---------+ 4 rows in set (0.00 sec) 獲取person表和account表中id都有的數據,只要其中一表中無都不會匹配出。
left join 用法(外連接):
mysql> select a.*,b.* from person a left join account b on a.id=b.id; +----+------+------+------+---------+ | id | name | age | id | account | +----+------+------+------+---------+ | 3 | Mili | 21 | 3 | 11 | | 4 | tom | 19 | 4 | 12 | | 5 | mike | 18 | 5 | 13 | | 6 | aaa | 17 | 6 | 666 | | 7 | bbb | 16 | NULL | NULL | | 8 | ccc | 22 | NULL | NULL | | 9 | ddd | 23 | NULL | NULL | | 10 | eee | 25 | NULL | NULL | +----+------+------+------+---------+ 8 rows in set (0.00 sec) 以left左邊表為主表來關聯查詢出數據,即使left右邊的表中無也會查詢。
right join 用法(外連接):
mysql> select a.*,b.* from person a right join account b on a.id=b.id; +------+------+------+----+---------+ | id | name | age | id | account | +------+------+------+----+---------+ | NULL | NULL | NULL | 1 | 22 | | NULL | NULL | NULL | 2 | 23 | | 3 | Mili | 21 | 3 | 11 | | 4 | tom | 19 | 4 | 12 | | 5 | mike | 18 | 5 | 13 | | 6 | aaa | 17 | 6 | 666 | +------+------+------+----+---------+ 6 rows in set (0.00 sec) 以right 右邊表為主表來關聯查詢出數,即使左邊表中無也會查詢出。