[英]A strange Oracle SQL with from 3 tables but only left join 2 in where clause?
我經常看到“ from” 2個表和“ join” 2個表的示例。 這就是為什么當我看到以下Oracle SQL語句時感到奇怪:
select a.oid, m.acct, p.cdate
from a, p, m
where a.oid = p.oid(+) and a.uid = m.uid
這等效於:
select a.oid, m.acct, p.cdate
from a left outer join p on (a.oid = p.oid)
inner join m on (a.uid = m.uid)
您發布的查詢是用舊語法編寫的,但與上面的選擇完全相同。 有一個簡單的例子:
select * from a, b where a.id = b.id;
也等於:
select * from a inner join b on (a.id = b.id);
兩個查詢應由優化器以相同方式處理。 連接順序也由優化程序確定。 因此,回到原始示例優化器將定義是否先應用inner join
,然后再應用left join
或相反聯接。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.