1

我有两个具有相同列的表。我正在使用oracle 10g。

TableA
------
id  status
---------------

1   W
2   R

TableB
------
id  status
---------------

1   W
3   S

我有两张桌子。我使用 UNION 从两个表中得到结果,如下所示。

select id, status 
from TableA 
union 
select id, status 
from TableB 
order by status;

如果我这样做,是否对这两个查询都应用了 order by?

我的要求是首先它必须结合结果然后它必须应用order by......

我怎样才能做到这一点?

谢谢!

4

4 回答 4

2

鉴于您显示的数据,您的查询将返回:

ID   STATUS
--   ------
 2   R
 3   S
 1   W

这是因为 UNION 将只返回唯一行,并且 (1, 'W') 行有重复。

如果要包括所有行,甚至是重复行,请使用UNION ALL代替UNION

select id, status 
from TableA 
union all
select id, status 
from TableB 
order by status;

UNION ALL您的查询将返回:

ID   STATUS
--   ------
 2   R
 3   S
 1   W
 1   W
于 2013-03-11T13:22:35.113 回答
0
select id, status 
from TableA 
union 
select id, status 
from TableB 
order by 2; -- status 
于 2013-03-11T13:08:48.380 回答
0

尝试以下查询

select id, status 
from (select id, status from TableA 
      union select id, status from TableB) 
order by status
于 2013-03-11T12:58:28.157 回答
-1

我认为你需要 Distinct :

Select Distinct id, status 
from (
      select id, status from TableA 
      union
      select id, status from TableB)
order by status
于 2013-03-11T13:03:34.203 回答