[精讚] [會員登入]
2806

[Mysql/Mariadb] Left Join 和 Right Join 合併表單

SQL語法中的 Left Join 和 Right Join 很常用,但是我常會忘記,所以寫下來備忘。

分享此文連結 //n.sfs.tw/11029

分享連結 [Mysql/Mariadb] Left Join 和 Right Join 合併表單@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2019-10-22 16:38:44 最後編修
2017-05-04 00:43:20 By 張○○
 

自動目錄

一、假設有兩個表

一個是職稱`user`:

另一個是公司的職缺`job`:

注意公司的職缺中,並沒有工程師(engineer)的需求,並且多了一個司機(driver)的需求,這個需求是表單`user`沒有的

二、使用三種join指令

[SQL1] SELECT * FROM `user` LEFT join `jobs` on user.u_id= jobs.require

[SQL2] SELECT * FROM `user` RIGHT join `jobs` on user.u_id= jobs.require

[SQL3]  SELECT * FROM `user`, `jobs` where `user`.u_id= jobs.require

說明

SQL1 職稱表 left join 職缺表
會列出「有職稱及職缺」及「有職稱但是沒有職缺」的記錄,不會出現「有職缺但沒有職稱」的記錄

SQL2 職稱表 right join 職缺表
和SQL1相反,會列出「有職稱及職缺」及「有職缺但沒有職稱」的記錄,不會出現「有職稱但是沒有職缺」的記錄

SQL3 職稱表 join 職缺表 by 條件

只會列出「一定要職稱和職缺」的記錄,換句話說,少了「職稱沒有職缺」及「職缺沒有職稱」都不行。

結論

1. left join 代表左表屬,右表從; right join 代表右表屬,左表從。

2. 表一 left join 表二等同於表二right join 表一,差別只是某些古老的資料庫中並沒有 right join 的語法。

3.SQL3 又稱為 inner join.

4.還有一種 natural join,可以參考這篇 [Mysql] 使用union合併兩個表@新精讚

5.還有一種叫 full outer join,在mysql中沒有相關的語法可用,你得用一些替代的方法[2],但是我無此需求,所以沒試過。

參考資料

[1] https://blog.wu-boy.com/2009/01/mysqlleft-right-inner-outer-join-%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95/

[2] http://stackoverflow.com/questions/4796872/full-outer-join-in-mysql


編修原文 2009-12-25 14:46:29

END

你可能感興趣的文章

[Mysql] 使用union合併兩個表 mysql合併兩個表的方法,使用union

Mysql INSERT ... ON DUPLICATE KEY UPDATE 寫法,MYSQL如果存在的修改,不存在就新增的寫法 Mysql有則修改,無則新增的sql寫法

[MYSQL] 查看資料表狀態 要看資料表的狀態,不是結構喔,以前我都會用 procedure analyse(): SELECT `colname`

[Mysql/Mariadb] GROUP_CONCAT 函數 MySQL 中和 group by 一起用的函式,如果我們要算數值的總和或平均,可以使用 sum() 或 avg() 。但是我們如果要在 group by 中把字串「黏起來」,不是使用 concat(

[Mysql/MariaDB] 使用 LOCATE, POSITION, INSTR來取代 like [Mysql/MariaDB中使用LOCATE, POSITION, INSTR來取代 like的方法

[Mysql/MariaDB] 加解密函數 Mysql/MariaDB上的加解密函數

隨機好文

為什麼要買長達二十年的保單? 為什麼要買長達二十年的保單?找一個可以說服我買二十年保單的理由。

[jQuery] textarea 的取值和給值 HTML 的 TEXTAREA 標籤若要用 jquery 取值,不能使用 .text() 或 .html() ,使用 .

[jQuery] select 元件的取值及給值 html中的元件select,在jquery中要如何使用?

[HP DL380G7] 生效啟動第3,4片網卡/開啟或關閉內建的網卡 HP DL380G7 預設第3,4片網卡裝完系統後找不到,難道是壞了?要怎麼辦?

[Win7] 燒錄 iso 檔 在Windows7 中內建燒錄程式,可以直接把檔案拉到光碟機裡,再執行燒錄。