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

mysql內連結與外連線

1.內連線(或等值連線)
      作用:獲取兩個表中欄位匹配關係的記錄。相當於求兩個集合的交集,即共有的部分


注意:MySQL的INNER JOIN(也可以省略 INNER 使用 JOIN,效果一樣)

格式:
select 欄位 
from 表1 
INNER JOIN 表2 
on  條件 (一般為表1與表2的關聯條件)
程式碼例項:

- 內連線:獲取兩個表中欄位匹配關係的記錄
SELECT a.runoob_id, a.runoob_author, b.runoob_count 
FROM runoob_tb a 
INNER JOIN tcount_tb b 
ON a.runoob_author = b.runoob_author;
 
-- 以上 SQL 語句等價於
SELECT a.runoob_id, a.runoob_author, b.runoob_count 
FROM runoob_tb a, tcount_tb b 
WHERE a.runoob_author = b.runoob_author;
2. 外連線
外連線,分為 左外連線與右外連線

LEFT JOIN(左外連線):獲取左表所有記錄,即使右表沒有對應匹配的記錄。
RIGHT JOIN(右外連線): 與 LEFT JOIN 相反,用於獲取右表所有記錄,即使左表沒有對應匹配的記錄

2.1 左外連線 LEFT JOIN
LEFT JOIN 會讀取左邊資料表的全部資料,即便右邊表無對應資料

 


LEFT JOIN讀取的資料除了公共部分外,還包括左邊全部資料

 

格式:
select 欄位 
from 表1 
left join 表2 
on  條件 (一般為表1與表2的關聯條件)

程式碼演示
 


SELECT a.`runoob_id`,a.`runoob_author`,b.`runoob_count`
FROM runoob_tb a
LEFT JOIN tcount_tb b
ON a.`runoob_author`=b.`runoob_author`;
 
-- 左外連線
SELECT user.*,orders.`number` 
FROM user 
LEFT JOIN orders 
ON user.`id` = orders.`user_id`
 

2.2 右外連線 RIGHT JOIN
RIGHT JOIN 會讀取右邊資料表的全部資料,即便左邊邊表無對應資料。
RIGHT JOIN讀取的資料除了公共部分外,還包括右邊全部資料

格式:
select 欄位 
from 表1 
right join 表2 
on  條件 (一般為表1與表2的關聯條件)
程式碼演示

SELECT a.`runoob_id`,a.`runoob_author`,b.`runoob_count`
FROM runoob_tb a
RIGHT JOIN tcount_tb b

--------------------- 
作者:ThinkPet 
來源:CSDN 
原文:https://blog.csdn.net/ThinkPet/article/details/83754312 
版權宣告:本文為博主原創文章,轉載請附上博文連結!