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
版權宣告:本文為博主原創文章,轉載請附上博文連結!