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

你可能感兴趣的:(数据库,Oracle)