[精讚] [會員登入]
2005

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

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

此文完整連結 http://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

你可能感興趣的文章

[Mysql/MariaDB] 使用Memory引擎修改及設定最大值的方法 Mysql/MariaDB 使用Memory引擎預設是16MB,修改及設定最大值的方法。

[Mysql] 建立叢集式資料庫2/4 -- DB2、DB3設定 使用galera建立Mysql的叢集式資料庫 ,繼續建立第2,第3台DBs

[Mysql/Mariadb] 忘記root密碼 常常會忘記root 密碼,簡單的幾步驟回復

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

[Mysql] 建立叢集式資料庫4/4--觀察及測試 觀察及測試haproxy+galera建立Mysql的叢集式資料庫,並進行壓力測試

[MySQL/Mariadb] 正規表達式(regular express) mysql的正規表達式很詭異,很不能接受

[phpmyadmin] 登錄超時 (1440 秒未操作),請重新登錄 phpmyadmin登錄超時 (1440 秒未操作),請重新登錄的問題,該如何解決?

[Mysql] 使用索引來加速搜尋 只要是常常用到搜索條件的欄位,就應該把它設成索引鍵,有無設定的速度差可能會好幾倍

[Mysql/Mariadb] 查看使用狀態,抓出可疑慢查詢SQL 當Mysql 的負載loading飆高時,除了重新啟動外,如果想對症下藥,那該怎麼處理?

[Mysql] 將記錄由0變1、1變0;或是判斷後再改值的寫法 MySQL 將記錄由0變1,1變0的SQL寫法 假如欄位 `active` 為0 是失效;1 為有效,他的型態是 tin

我有話要說


限制:留言最高字數1000字,超過部分會被截掉。請注意:留言不可帶有網址,會被濾掉。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

HP SAS硬碟leds燈號說明 HP SAS硬碟leds燈號(hp g7/g6系統適用)說明

安裝SPHINX支援中文 新版本的 sphinx 和舊版不同,網路上很多範例和教學是不能用的。此文是安裝和設定方法分享

為什麼要重造輪子? 什麼輪子?造什麼輪子?我為什麼要重造輪子?

一個邏輯的錯誤刪了全部檔案的經驗 今天本來想做一件很簡單的事,但卻足足浪費我多一倍的時間,再加上刪掉我全部的檔案,原因只是因為我自己的邏輯錯誤。

[CodeIgniter 3] 資料庫的使用方法整理2/2 CI3 承襲 CI2,有很多的builder class可以用,依各人的使用習慣,有人喜歡一堆sql字串,有人喜歡用helper