MYSQL 多表關聯查詢


一、 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 右邊表為主表來關聯查詢出數,即使左邊表中無也會查詢出。

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM