[英]Oracle Left outer join
SELECT
a,
last_note_user,
c,
d,
iso_src
FROM
X
CROSS JOIN Y
CROSS JOIN Z
LEFT OUTER JOIN W
ON W.last_note_user = Z.userid
AND W.user_ten = Y.iso_src
上面的ANSI代碼獲取了107條記錄,當我給出沒有ANSI代碼的相同查詢時,它獲取了875條記錄。非ANSI查詢如下:
SELECT
a,
last_note_user,
c,
d,
iso_src
FROM
X,
Y,
Z,
W
WHERE
W.last_note_user = Z.userid(+)
AND W.user_ten = Y.iso_src(+)
為什么使用ANSI和不使用ANSI標准的兩個查詢有區別? 通過回答以上查詢,請幫幫我!!!
您的舊式查詢在謂詞的錯誤一側帶有(+)符號。 它應該是:
SELECT
a,
last_note_user,
c,
d,
iso_src
FROM
X,
Y,
Z,
W
WHERE
W.last_note_user (+) = Z.userid
AND W.user_ten (+) = Y.iso_src
但是我不會再使用老式語法了。
具有舊ANSI語法的OUTER JOINS模棱兩可,因此誰知道查詢優化器對此有所了解。
如果第一個SQL產生的行正確,請忽略ANSI版本並繼續。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.