用聯結來查詢兩個表

來源:互聯網
上載者:User
本文僅作為初學者SQL應用備忘錄
我們經常要查詢兩個表中某個欄位相同的和不同的記錄,用聯結來進行查詢可以很方便地得到所要的結果。
一、什麼是聯結
聯結:join 表示兩個表的關係,我們可以把兩個表看成兩個集合。假設有兩個表,我們用A和B來表示,這兩個表有一個或者多個相同的欄位。那麼,就存在著以下三個不同的集合:
1、交集:兩個表中欄位相等的記錄
2、A交B補:在A中,且相同欄位的內容不等於B的記錄
3、B交A補:在B中,且相同欄位的內容不等於A的記錄

二、用聯結來查詢
join有三種用法與以上三個集合對應
1、交集:inner join 內部聯結
2、A交B補:left join 左聯結
3、B交A補:right join 右聯結

三、執行個體
現在來看一個執行個體。有兩個表,表一:地址;表二:郵件。
為了簡單,兩個表都只有一個欄位,欄位名是“名字”。現在來得到三個集合:
1、在兩個表中都有名字的記錄
SELECT 地址.名字 AS 名字
FROM 地址 INNER JOIN 郵件 ON 地址.名字 = 郵件.名字;


2、在地址中有名字且在郵件中沒有名字的記錄
SELECT 地址.名字
FROM 地址 LEFT JOIN 郵件 ON 地址.名字 = 郵件.名字
WHERE (((郵件.名字) Is Null));


註:對地址表來說這是左聯結,對郵件表來說,這就是右聯結

3、在地址中沒有名字且在郵件中有名字的記錄
SELECT 郵件.名字
FROM 地址 RIGHT JOIN 郵件 ON 地址.名字 = 郵件.名字
WHERE (((地址.名字) Is Null));


註:對地址表來說這是右聯結,對郵件表來說,這就是左聯結

後面兩個也可以寫成用郵件表來聯結地址表,這就留給大家自己去寫吧。Bluetooth 和 lz1220 可以來看看。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。