表示例:
table1 id
name1t1
2t23t3
table2 id
age1112
22444用比較運算子比較要連線的列的值的連線,不匹配的行不會被顯示。sql關鍵字join 或者inner join,通常寫成join。
例:
select * from tablea join tableb on tablea.id=tableb.id;
id
name
idage1t1
1112t2
222等效於
select * from tablea,tableb where tablea.id=tableb.id
① 外連線又分為:左外連線、右外連線、全外連線。
② 對應的sql關鍵字:left/right/full outer join,通常省略outer關鍵字,寫成left/right/full join。
③在左、右外連線中都會以一種表為基表,基表的所有行、列都會顯示,外表如果和條件不匹配則所有的外表列值都為null。
全外連線則所有表的行、列都會顯示,條件不匹配的值皆為null。
左外連線示例:
select * from tablea left join tableb on tablea.id=tableb.id
id
name
idage1t1
1112t2
2223t3
null
null
2. 右外連線示例:
select * from tablea right join tableb on tablea.id=tableb.id
id
name
idage1t1
1112t2
211null
null444
3. 全連線示例:
select * from tablea full join tableb on tablea.id=tableb.id
id
name
idage1t1
1112t2
222null
null444
3t3null
null
注:mysql不支援full join,解決辦法:right join + union + left join
兩張表時:
select * from a left join b on a.id = b.id (where 條件)
union
select * from a right join b on a.id = b.id (where條件);
沒有where條件的交叉連線將產生連線表所涉及的笛卡爾積,即tablea的行數*tableb的行數的結果集。如果帶where,返回或顯示的是匹配的行數。(cross join後只能用where不能是on)
select * from tablea cross join tableb;
id
name
idage1t1
1112t2
2223t3
3331t1
1112t2
2223t3
3331t1
1112t2
2223t3
333等效於:
select * from tablea,tableb;
內連線 外連線 交叉連線
一 連線查詢 根據兩個表或者多個表的列之間的關係,從這些表中查詢資料。目的 實現多個表查詢操作。二 連線型別 連線分為三種 內連線 外連線 交叉連線。1 內連線 使用比較運算子 包括 和 進行表間的比較操作,查詢與連線條件相匹配的資料。根據比較運算子不同,內連線分為等值連線和不等連線兩種。1.1 等...
內連線 外連線 交叉連線總結
本篇文章總結了一下sql中的五種連線 內連線 左外連線 右外連線 全連線 交叉連線 一 內連線 full join full outer join 內連線查詢操作列出與連線條件匹配的資料行,它使用比較運算子比較被連線列的列值。內連線分三種 1 等值連線 在連線條件中使用等於號 運算子比較被連線列的列...
SQL Server內連線 外連線 交叉連線
在資料庫查詢中,我們常常會用到的表連線查詢,而我自己在工作中也是時常用這些表連線查詢。而就在剛剛我卻還沒有搞清楚資料庫表連線到底有哪幾種,這幾種表連線查詢方式又有什麼區別,實屬慚愧!藉以此文以謹記。資料庫表連線查詢分三種 內連線 外連線 交叉連線 那下面我們就來分別說說這三種連線。內連線又分為 等值...