茫茫網海中的冷日 - 對這文章發表回應
茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1672177 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
IMG_60D_00260.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

對這文章發表回應

發表限制: 非會員 可以發表

發表者: 冷日 發表時間: 2018/12/12 5:01:43

inner join、full out join、left join

摘要:inner join、full out join、left join

圖片來源為FB的MSDN小編

由於在網路上討論join的文章雜亂煩多,我是有看沒有懂,

故,我還是自己親自跑實例比較明瞭(自己親自跑一遍就通了)。

 

一、一開始先建立資料



CREATE TABLE [dbo].[table_a]
(
[id_a] [FLOAT] NULL,
[name_a] [NVARCHAR](50) NULL
)
ON [PRIMARY]
go
CREATE TABLE [dbo].[table_b]
(
[id_b] [FLOAT] NULL,
[name_b] [NVARCHAR](50) NULL
)
ON [PRIMARY]
go
--dbo.Table_a
INSERT dbo.Table_a VALUES (1, N'a')
INSERT dbo.Table_a VALUES (2, N'b')
INSERT dbo.Table_a VALUES (3, N'c')
INSERT dbo.Table_a VALUES (4, N'd')
--dbo.Table_b
INSERT dbo.Table_b VALUES (1, N'aa')
INSERT dbo.Table_b VALUES (2, N'bb')
INSERT dbo.Table_b VALUES (5, N'cc')
INSERT dbo.Table_b VALUES (6, N'dd')

 

二、先列出table_a與table_b的資料



select * from table_a



select * from Table_b

 

三,主要join方式 

個人製作的註記簡圖

 

1、inner join



select * from Table_a
join Table_b on Table_a.id_a = Table_b.id_b



select * from Table_a
inner join Table_b on Table_a.id_a = Table_b.id_b

的結果是一樣的

還有一個語法跟inner join是蠻相似的,就是NATURAL JOIN,

其兩資料表之間同名的欄位會被自動結合在一起。

不過在SQL SERVER則是不支援這種語法,如想了解請參考

NATURAL JOIN 關鍵字 (SQL NATURAL JOIN Keyword) - 自然連接

 

2.1、full outer join等於full join



select * from Table_a
full join Table_b
on Table_a.id_a = Table_b.id_b

 

2.2、full outer join but a.Key is null or b.Key is null



select * from Table_a
full outer join Table_b
on Table_a.id_a = Table_b.id_b
where Table_a.id_a is null or Table_b.id_b is null

 

3.1、left outer join等於left join



select * from Table_a
left join Table_b on Table_a.id_a = Table_b.id_b

 

3.2、left outer join but b.Key is null



select * from Table_a
left outer join Table_b on Table_a.id_a = Table_b.id_b
where Table_b.id_b is null

 

4.1、right outer join等於right join



select * from Table_a
right join Table_b on Table_a.id_a = Table_b.id_b

 

4.2、right outer join but a.Key is null



select * from Table_a
right outer join Table_b on Table_a.id_a = Table_b.id_b
where Table_a.id_a is null

 

5、笛卡爾積、交叉合併cross join



select * from Table_a ,Table_b

 

結論:感覺使用圓餅來解說似乎也不是那麼直覺好理解,也有人用較直覺的資料列方圖來表示,

個人覺得使用三度空間的立體圖來表示會不會好一點。

 

參考資料:

A Visual Explanation of SQL Joins

[SQL]Join的觀念


原文出處:inner join、full out join、left join | 阿沙布魯 - 點部落
內容圖示
url email imgsrc image code quote
樣本
bold italic underline linethrough   












 [詳情...]
validation picture

注意事項:
預覽不需輸入認證碼,僅真正發送文章時才會檢查驗證碼。
認證碼有效期10分鐘,若輸入資料超過10分鐘,請您備份內容後,重新整理本頁並貼回您的內容,再輸入驗證碼送出。

選項

Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|