利用用union + 外连接 来实现.

解决方案 »

  1.   

    select a.……,b.……
    from a,b
    where a.id(+) = b.id
    union
    select a.……,b.……
    from a,b
    where a.id = b.id(+) 
      

  2.   

    如下:
    select * from t_bds
    union select * from t_bds_temp;
    t_bds和t_bds_temp的表结构完全相同.如下
    select bds_id from t_bds union 
    select yxbhid from t_sd_yxbh;
    其中bds_id和yxbhid的类型完全相同
    需要说明的是选择的结果自动降重复数据过滤,所以显示的数据可能与
    零个表的数据个数不同
      

  3.   

    oracle目前还不能做到全连接可是2楼的效率不高.
      

  4.   

    不要用UNION,应该尽可能地使用UNION ALL。
    就性能来说,UNION ALL不需要对查询结果进行DISTINCT操作,要快很多。全连接比较常用的写法是(假定A,B表要求全连接):
    SELECT A.COL1, A.COL2, ..., B.COL1, B.COL2, ...
      FROM A, B
     WHERE A.ID = B.ID (+)
       AND ...
    UNION ALL
    SELECT A.COL1, A.COL2, ..., B.COL1, B.COL2, ...
      FROM A, B
     WHERE B.ID = A.ID (+)
       AND A.ID IS NULL
       AND ...;其中第二段的写法可以用not exists来取代,要看具体的执行效率。