簡體   English   中英

Oracle左外部聯接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM