1. 程式人生 > >資料庫Oracle與Mysql語法對比:聯結(Join)

資料庫Oracle與Mysql語法對比:聯結(Join)

在SQL標準中規劃的(Join)聯結大致分為下面四種:

1. 內聯結:將兩個表中存在聯結關係的欄位符合聯結關係的那些記錄形成記錄集的聯結。

2. 外聯結:分為外左聯結和外右聯結。
左聯結A、B表的意思就是將表A中的全部記錄和表B中聯結的欄位與表A的聯結欄位符合聯結條件的那些記錄形成的記錄集的聯結,這裡注意的是最後出來的記錄集會包括表A的全部記錄。
右聯結A、B表的結果和左聯結B、A的結果是一樣的,也就是說:

Select A.name B.name From A Left Join B On A.id=B.id 

Select A.name B.name From B Right Join A on
B.id=A.id

執行後的結果是一樣的。

3.全聯結:將兩個表中存在聯結關係的欄位的所有記錄取出形成記錄集的聯結(這個不需要記憶,只要是查詢中提到了的表的欄位都會取出,無論是否符合聯結條件,因此意義不大)。

4.無聯結:不用解釋了吧,就是沒有使用聯結功能唄,也有自聯結的說法。

USING (column_list):
其作用是為了方便書寫聯結的多對應關係,大部分情況下USING語句可以用ON語句來代替
如下面例子:

a LEFT JOIN b USING (c1,c2,c3)

其作用相當於下面語句

a LEFT JOIN b ON a.c1=b.c1 AND a.c2=b.c
2 AND a.c3=b.c3

只是用ON來代替會書寫比較麻煩而已。

通俗的講:

A left join B 的連線的記錄數與A表的記錄數同
A right join B 的連線的記錄數與B表的記錄數同
A left join B 等價B right join A