1. 程式人生 > >Oracle -- left join查詢結果不是左表的全部資料的解決方法

Oracle -- left join查詢結果不是左表的全部資料的解決方法

left join在實際應用中並不是查出資料都是左邊的全部資料,為什麼呢?看看自己的解決方法吧大笑

SELECT
       T.xx,
       T1.xx,
       ...
  FROM xxx T
  LEFT JOIN xxx T1
    ON T.ID = T1.ID
 WHERE T.xx = xx
   and T1.xx= xx
本來想查T表所有符合條件的資料,但是結果查出來不是,怎麼辦呢,不急,現在看看解決方法吧,當然如果不正確的話,歡迎指出哦

1.在left join後增加WHERE條件中關於T1的過濾條件

SELECT
       T.xx,
       T1.xx,
       ...
  FROM xxx T
  LEFT JOIN (SELECT xx,xx2,... FROM xxx WHERE xx= x) 
T1 ON T.ID = T1.ID WHERE T.xx = xx
2.將WHERE後的條件放在on後面,去掉WHERE條件
SELECT
       T.xx,
       T1.xx,
       ...
  FROM xxx T
  LEFT JOIN xxx T1
    ON T.ID = T1.ID AND T.xx = xx AND T1.xx = xx