Oracle rownum = 1从集合中选择最顶行失败

时间:2017-12-06 07:29:02

标签: oracle rownum top-n

我需要从两个表中选择,

RATING_TABLE

  RATING_TYPE       RATING_PRIORITY
  TITAN             1
  PLATINUM(+)       1  
  PLATINUM          2
  DIAMOND(+)        3
  DIAMOND           3  
  GOLD              4
  SILVER            4

RATING_STORAGE

RATING           AMOUNT  
SILVER           200
GOLD             510
DIAMOND          850
PLATINUM(+)      980
TITAN            5000

我想根据 RATING_TABLE 中的RATING_PRIORITY从 RATING_STORAGE 表中选择评分。 我想选择评级优先级最低的一行。如果两个评级优先级是eqaul我想选择金额最低的那个。 所以我使用了查询,

select s.rating,s.amount 
from RATING_TABLE r, RATING_STORAGE s 
where        r.rating_type= s.rating_type 
and rownum=1 
order by  r.rating_priority asc , s.amount asc ;

我在排序结果时得到正确的输出但是 rownum = 1 无法给出最顶行。

先谢谢。

1 个答案:

答案 0 :(得分:1)

您需要在完成排序后选择,在您的情况下:

     select *
  from (select s.rating
              ,s.amount
          from rating_table   r
              ,rating_storage s
         where r.rating_type = s.rating_type
           and rownum = 1
         order by r.rating_priority asc
                 ,s.amount          asc)
 where rownum = 1;
相关问题