select a.……,b.…… from a,b where a.id(+) = b.id union select a.……,b.…… from a,b where a.id = b.id(+)
如下: 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的类型完全相同 需要说明的是选择的结果自动降重复数据过滤,所以显示的数据可能与 零个表的数据个数不同
oracle目前还不能做到全连接可是2楼的效率不高.
不要用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来取代,要看具体的执行效率。
from a,b
where a.id(+) = b.id
union
select a.……,b.……
from a,b
where a.id = b.id(+)
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的类型完全相同
需要说明的是选择的结果自动降重复数据过滤,所以显示的数据可能与
零个表的数据个数不同
就性能来说,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来取代,要看具体的执行效率。