3151

[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 INSERT ... ON DUPLICATE KEY UPDATE 寫法,MYSQL如果存在的修改,不存在就新增的寫法 Mysql有則修改,無則新增的sql寫法

[MySQL] console mode 的亂碼處理 使用MySQL的console mode如果出現亂碼 在,要怎麼處理?

兩次使用InnoDB的慘痛經驗 Mysql 的Innodb引擎雖然好用,但是我得說說我兩次的慘痛經驗,這讓我考慮以後可能不會再使用innodb了

[Mysql/Mariadb] 密碼設定強度修改 新的mysql對於密碼預設也把原來的規則改得更嚴格,此篇教你修改密碼的設定政策

[Mysql/MariaDB] 修改資料庫、表格或欄位名稱 Mysql/MariaDB修改資料庫、表格或欄位名稱

[Mysql/Mariadb] 全文檢索 fulltext index 關於 MySQL 的全文檢索

隨機好文

如何在linux下執行java 原生的java應用程式可以使用簡單的方法在console下面寫出來,適合作簡單的應用

[Freebsd] 定時測試 ADSL 是否斷線並重連 中華電信 ADSL 雖有固定 ip,可是他卻會不定時「斷線」, 使用以下的 方法可以定時測試是否斷線,以及重新撥接。

Linux shell 的date表示法 linux下SHELL中的date表示法

魔球中小女孩唱的歌 The show 魔球中小女孩唱的歌 The show

[MySQL/Mariadb] console 將查詢結果輸出到檔案 在mysql 的console中該如何將查詢結果輸出到檔案?

精讚::