測試一下你的Oracle有Full Outer Join的Bug麼?9i以上請進(2)
Bug2: FULL OUTER JOIN = LEFT OUTER JOIN
奇怪的是,如果將
select a.*,b.mc MC1, c.mc MC2
from ts a,tdm b, tdm c
where A.dm1 = B.DM(+) AND B.type(+)='1'
and A.dm2 = c.DM(+) AND c.type(+)='2'
建立為檢視
create view vts as select a.*,b.mc MC1, c.mc MC2
from ts a,tdm b, tdm c
where A.dm1 = B.DM(+) AND B.type(+)='1'
and A.dm2 = c.DM(+) AND c.type(+)='2'
/
則下面的查詢結果就是正確的
程式碼:
SQL> select s.*,p.* from
2 vts s full outer join
3 (select * from (select tp.*,rank()over(order by id) rn from tp) --where rn<10
4 ) p
5 on s.pid=p.id
6 /
ID PID DM1 DM2 MC1 MC2 ID CON RN ---- ---- ---- ---- ---------- ---------- ---- ---- ---------- 3 1 a ss AA SSSS 1 a 1
1 1 a aa AA AAAA 1 a 1
2 2 b BB 2 b 2
5 3 c CC 3 c 3
4 3 a ss AA SSSS 3 c 3
9 a AA
10 9
7 7 c ee CC
6 f
已選擇9行。
。。。。。。。。
但是加上一個無關緊要的條件限制後,查詢結果就不正確了,其結果也相當於是左連線
程式碼:
SQL> select s.*,p.* from
2 vts s full outer join
3 (select * from (select tp.*,rank()over(order by id) rn from tp) where rn<10
4 ) p
5 on s.pid=p.id
6 /
ID PID DM1 DM2 MC1 MC2 ID CON RN ---- ---- ---- ---- ---------- ---------- ---- ---- ---------- 3 1 a ss AA SSSS 1 a 1
1 1 a aa AA AAAA 1 a 1
2 2 b BB 2 b 2
5 3 c CC 3 c 3
4 3 a ss AA SSSS 3 c 3
9 a AA
10 9
7 7 c ee CC
已選擇8行。
。。。。。。。
程式碼裡用的rank而沒用rownum,因為我這裡一用rownum就出現Ora-03113
若將select * from (select tp.*,rank()over(order by id) rn from tp) where rn<10也建立為一個檢視
create view vtp as select * from (select tp.*,rank()over(order by id) rn from tp) where rn<10
則Full Outer Join的查詢結果是正確的
程式碼:
SQL> select s.*,p.* from
2 vts s full outer join
3 vtp p
4 on s.pid=p.id
5 /
ID PID DM1 DM2 MC1 MC2 ID CON RN ---- ---- ---- ---- ---------- ---------- ---- ---- ---------- 3 1 a ss AA SSSS 1 a 1
1 1 a aa AA AAAA 1 a 1
2 2 b BB 2 b 2
5 3 c CC 3 c 3
4 3 a ss AA SSSS 3 c 3
9 a AA
10 9
7 7 c ee CC
6 f 4
已選擇9行。 ........................
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29867/viewspace-810585/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 測試一下你的Oracle有Full Outer Join的Bug麼?9i以上請進Oracle
- 關於Oracle full outer join 的bug問題分析及處理Oracle
- 【FULL OUTER JOIN】全外連線的union all改寫方法
- join、inner join、left join、right join、outer join的區別
- Oracle資料庫聯接(inner join ,outer join)和NOT IN的特殊情況Oracle資料庫
- Inner Join, Left Outer Join和Association的區別
- oracle的left join,right join和full join的一點介紹(R1)Oracle
- ORACLE 9I not exists的bugOracle
- 【原】Oracle中Left Outer Join和外關聯(+)的區別Oracle
- Oracle 9I FlashBack 測試Oracle
- 理解full outer jion,union,union all
- ZT:簡單介紹join,outer-join,semi-join,anti-join的區別
- 外連線(outer join)示例
- Oracle 9i閃回測試。Oracle
- oracle left outer join(左聯接)顯示全部的課堂收藏資訊Oracle
- 【SQL】13 SQL 別名、SQL 連線(JOIN)、SQL INNER JOIN 關鍵字、SQL LEFT JOIN 關鍵字、SQL RIGHT JOIN 關鍵字、SQL FULL OUTER JSQL
- outer join新舊語法分析語法分析
- oracle 9i index bug?OracleIndex
- Oracle 9i RAC enqueue等待測試OracleENQ
- 各位大佬,小弟想學習一下大資料測試,請問有什麼課程可以推薦的麼?大資料
- 請問一下大家,客戶端做 UI 自動化測試有沒有好的方案客戶端UI
- `FULL JOIN` 和 `UNION ALL`
- 淺談軟體測試基礎:你有必要聚焦一下回歸測試
- 關於Oracle 9i RAC enqueue等待的一點測試OracleENQ
- 軟體測試培訓分享:Bug的作用有多大?
- ·請列舉你所瞭解的測試工具
- 請教各位元件化、paas 化得測試,採用什麼樣的測試方法,大家有這方面測試的希望多交流一下元件化
- 測試你的前端程式碼 - part2(單元測試)前端
- 測試你的前端程式碼 – part2(單元測試)前端
- 請問一下大家,自動化測試編碼結構是怎麼樣的?
- 請教:有什麼常用的 java_selenium 的自動化測試框架Java框架
- 請問有什麼比較好的方式來建立 facebook 的測試賬號
- 面試問到測試方法論完全懵逼,請問一下測試方法論到底 是什麼面試
- 單元測試效率優化:為什麼要對程式進行測試?測試有什麼好處?優化
- 關於Oracle 9i匯入/匯出效果的測試報告Oracle測試報告
- 軟體相容性測試怎麼進行?相容性測試有什麼作用?
- 有關oracle external table的一點測試。Oracle
- 9i index bug.txt 之2Index