在合并两个表的结果后应用顺序?

时间:2013-03-11 12:55:03

标签: sql oracle plsql

我有两个具有相同列的表。我正在使用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 ...

我该怎么做?

谢谢!

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

尝试以下查询

select id, status 
from (select id, status from TableA 
      union select id, status from TableB) 
order by status

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

我认为你需要与众不同:

Select Distinct id, status 
from (
      select id, status from TableA 
      union
      select id, status from TableB)
order by status