本節介紹join(連線)的概念

2021-06-28 10:28:38 字數 1223 閱讀 8777

了從兩個或多個表中選出資料,我們一般使用表連線來實現這個功能。 

本節介紹join(連線)的概念. 為此我們準備了兩個試驗用表: album(**表) 和 track(曲目表). 

**表:包含200首來自amazon的**cd的概要資訊。

album(asin, title, artist, price, release, label, rank)

曲目表:每張**中的曲目(因為是**cd,所以也可叫歌曲)的詳細資訊。

track(album, dsk, posn, song) 

sql短語

from album join track on album.asin=track.album 

表示連線album和track表。 

其中,album.asin表示**的惟一標識號,track.album表示曲目表中和**關聯的**號。連線後,得到乙個臨時表,該臨時表中每條記錄包含的字段由兩部分組成,除了**表中的對應欄位album(title, artist ...),還包含曲目表的所有欄位track(album, disk, 

posn and song)。 

有了這張臨時表,很多查詢就容易實現了。 

看看一些具體的例項, 

一、列出歌名為'alison'的**名稱和作者

select title, artist

from album join track

on (album.asin=track.album)

where song = 'alison'

顯然,歌名、**名稱和作者分別在兩個表中,必需使用表連線來完成這個查詢。 

二、哪個artist錄製了歌曲'exodus'

select artist

from album join track on (asin=album)

where song = 'exodus'

用作連線的兩個欄位asin,album因為在兩個表中都是惟一的,所以不一定要加表名作為字首。但為了方便理解,建議使用字首,形如:album.asin=track.album 

三、列出曲目表中所有屬於'blur'**的歌曲

select song

from album join track on (asin=album)

where title = 'blur'

如果我們把 album join track on (asin=album) 看成乙個臨時表的話,join的概念就很好理解了。  

Hive的連線 join 方案

一 common join reduce side join shuffle join 這三種其實都是一種連線方案 即在reduce端做join操作。一般情況下,如果不手動指定mapjoin或者不滿足mapjoin的條件,一般hive解析器會將join操作轉換成reducejoin.他會經歷完整的m...

Linq中的連線 join

linq中連線主要有組連線 內連線 左外連線 交叉連線四種。各個用法如下。1 組連線 組連線是與分組查詢是一樣的。即根據分組得到結果。如下例,根據publisther分組得到結果。使用組連線的查詢語句如下 使用組連線 var groupquery from publisher in sampleda...

sql中的join連線

今天簡單的了解一下資料庫中的sql連線,具體的講解可以參考 資料庫原理與應用 這裡從實際的使用角度來說,首先準備測試資料,表test1,test2 建立表test1 create table test1 name varchar2 20 age int 建立表test2 create table t...