了從兩個或多個表中選出資料,我們一般使用表連線來實現這個功能。
本節介紹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...