[精讚] [會員登入]
2821

[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

你可能感興趣的文章

[Docker] Mariadb-Galera出現Incorrect definition of table mysql.column_stats:'hist_type'及 'histogram' 使用docker的Mariadb-galera出現'hist_type'及 'histogram'型別錯誤的解決方法。

[Mysql/Mariadb] Left Join 和 Right Join 合併表單 SQL語法中的 Left Join 和 Right Join 很常用,但是我常會忘記,所以寫下來備忘。

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

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

[Mysql] 資料型態int, float, double, text, char, varchar, blob大小 Mysql中資料型態int, float, text, char, varchar, blob大小

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

隨機好文

SELinux 常用指令和檔案 在Redhat系列中,Centos5以後加入了selinux,他並沒有這麼可怕,不必每次看到Selinux ,就想把他

[Freebsd] 使用 ADSL 撥接上網 Freebsd上要使用 ADSL 撥接上網,該如何設定?

Smarty安裝 smarty 是著名的樣版引擎,非常的好用,用多了突然發現拿掉smarty反而不會寫php了,以下是安裝過程..

[Bootstrap] Datepicker使用/Bootstrap日期選日期選擇器的使用 Bootstrap日期選日期選擇器的使用

[PHP]解決ksort新增的SORT_NATURAL|SORT_FLAG_CASE方法 php>=5.4中ksort函數多了SORT_NATURAL 和 SORT_FLAG_CASE 旗標,對舊版的PHP中要怎麼辦?