首先,mysql本身是沒有提供全外連線的,
mysql中多表查詢只提供了內連線,左外連線與右外連線:
table_reference [outer] join} table_reference on conditional_expr
1】inner join on內連線(只寫join時預設為內連線)
2.1、左外連線:顯示左表的全部記錄
2.2、右外連線:顯示右表的全部記錄
2.3、全外連線:左表和右表都不做限制,所有的記錄都顯示,兩表不足的地方用null 填充;
也就是:
左外連線=左表全部記錄+相關聯結果
右外連線=右表全部記錄+相關聯結果
全外連線=左表全部記錄+右表全部記錄+相關聯結果=左外連線+右外連線-相關聯結果(即去重複)
那麼在mysql中誰可以做到呢?
union
union 操作符用於合併兩個或多個 select 語句的結果集。
注釋:預設地,union 操作符選取不同的值。如果允許重複的值,請使用 union all。
故實現全外連線可以使用:
注釋:以上連線全為等值連線;oracle中全外連線可以使用full join;請不要弄混。
**:
MySQL中的全外連線
連線的定義 兩個表之間通過某種聯絡連線在一起,產生乙個新的表 1.內連線 inner join 概念 返回連線表中符合連線條件和查詢條件的資料行。例項1 職工表與部門表 職工表 部門表 將以上兩個表進行內連線 select from emp e inner join dept d on e.dept...
MySQL內連線 左外連線 右外連線 全外連線
連線的優勢是減少了外來鍵的使用。內連線 最常見的等值連線,指連線結果僅包含符合連線條件的行,參與連線的兩個表都應該符合連線條件。inner join或join on condition 首先建立兩個表person和card,內容如下 select from card id cardname 1 ca...
SQL中的全外連線
今天看到一貼,說到 mysql 不支援全外連線,希望能給出乙個方法能夠解決這個問題.我們首先必須明白在數學領域,set 和 bag 是兩種不同的概念.bag 比 set 更加複雜.主要就是允許了元素的重複出現.因此 bag 的union,intersect,difference 也就有了些區別.要模...