SQL左、右、內、全連線
阿新 • • 發佈:2018-11-07
1.前言
本文將實現兩表的多種連線方式,先存在兩個表如下所示:
2.內聯接
典型的聯接運算,包括在查詢語句中使用像 = 或 <> 之類的比較運算子。內聯接使用比較運算子根據每個表共有的列的值匹配兩個表中的行。
例如,檢索 a 和 b 表中 a 表中 id 與 b 表中 pid 相同的項,查詢語句如下所示:
select a.*,b.* from a inner join b on a.id=b.pid
查詢結果如下所示:
3.外連線
外聯接可以是左向外聯接、右向外聯接或完整外部聯接。在 FROM子句中指定外聯接時,可以由下列幾組關鍵字中的一組指定:
3.1 左外連線(左連線)
左向外聯接的結果集包括 LEFT OUTER子句中指定的左表的所有行,而不僅僅是聯接列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯的結果集行中右表的所有選擇列表列均為空值。
例如將之前的表 a 的 id 與表 b 的 pid 進行左連線,查詢語句如下所示:
select a.*,b.* from a left join b on a.id=b.pid
查詢結果如下所示:
3.2 右外連線(右連線)
右向外聯接是左向外聯接的反向聯接。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值。
例如將之前的表 a 的 id 與表 b 的 pid 進行右連線,查詢語句如下所示:
select a.*,b.* from a right join b on a.id=b.pid
查詢結果如下所示:
3.3 完全連線(全連線)
select a*,b.* from a full join b on a.id=b.pid
查詢結果如下所示:
其結果與以下查詢語句等價:
select a.*,b.* from a left outer join b on a.id=b.pid union select a.*,b.* from a right outer join b on a.id=b.pid