[精讚] [會員登入]
2766

[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] FIND_IN_SET函數,把多筆條件判斷弄成字串 SQL 我們如果要查找某個欄位是否為某個值的時候,如果要判斷的條件很多,可以用這個函數

[mysqldump] Mysqldump時出現記憶體錯誤Out of memory 當進行 mysqldump 時出現 Out of memory (Needed xxxxx bytes) 的錯誤,該如何處理?

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

[Mysql/MariaDB] 查看資料庫所占空間 查看資料庫在磁碟中所占空間

[Mysql] 修改欄位的自動索引值autoindex (auto_increment ) Mysql 新增、刪除、修改、查看欄位的自動索引值autoindex (auto_increment)

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

隨機好文

使用Google尋找你的手機 這近發現google竟然可以用來找android的手機,而且不需要經過什麼設定或安裝軟體。

沒有非誰做不可的事,也沒有不可被取代的人 沒有非誰做不可的事,也沒有不可被取代的人

談借錢 人借錢時手心向上頭向下,人還錢時手心向下頭向上

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

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