oracle右连接失效,oracle 右连接
t1.name(+) = t2.name 的意思是
用t2表做主表 t1表做副表做右關聯
會用t2的所有數據,如果和t1關聯不上則放空值
轉自http://blog.csdn.net/one132/archive/2009/07/06/4325233.aspx
關鍵字: oracle 左邊接 右連接 oracle加號
在Oracle PL-SQL中,左連接和右連接以如下方式來實現
查看如下語句:
SELECT emp_name, dept_name
FORM Employee, Department
WHERE Employee.emp_deptid(+) = Department.deptid
此SQL文使用了右連接,即“(+)”所在位置的另一側為連接的方向,右連接說明等號右側的所有記錄均會被顯示,無論其在左側是否得到匹配,也就是說上例中無論會不會出現某個部門沒有一個員工的情況,這個部門的名字都會在查詢結果中出現。
反之:
SELECT emp_name, dept_name
FORM Employee, Department
WHERE Employee.emp_deptid = Department.deptid(+)則是左連接,無論這個員工有沒有一個能在Department表中得到匹配的部門號,這個員工的記錄都會被顯示
有兩個表T1和T2,兩個表除了主鍵索引外均無其他索引,這兩個表由T1.F1(主鍵),T2.F2(主鍵)進行左連接,SQL語句有兩種寫法:
1. SELECT * FROM T1,T2 WHERE T1.F1=T2.F2(+)
2. SELECT * FROM T1 LEFT JOIN T2 ON T1.F1=T2.F2
當查看1的執行計劃時發現T1為全表掃描,T2為索引掃描。
當查看2的執行計劃時發現兩個表均為全表掃描。
不過我在oracle9.2自帶的SQL Referrence.pdf的第511頁上看到有這樣一句:
Oracle Corporation recommends that you use the FROM clause OUTER JOIN syntax rather than the Oracle join operator.
前者選擇的優化器是RULE,而后者選擇的優化器是CBO的ALL ROWS。
總結
以上是生活随笔為你收集整理的oracle右连接失效,oracle 右连接的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle恢复库覆盖原来的库,orac
- 下一篇: android 从本地服务器下载文件,R