选择最高优先级行

Cli*_*ton 2 sql database oracle oracle10g

假设我有一个包含三列的表key,value并且priority在(key,priority)上有一个唯一键.

我想选择所有key/ value对,其中priority该密钥高于任何其他优先级key.

例如:

key | value   | priority
----------------------
'a' | 'Alice' |   5 
'a' | 'Aaron' |   10
'b' | 'Bob'   |   1
Run Code Online (Sandbox Code Playgroud)

应该返回:

key | value
-------------
'a' | 'Aaron'
'b' | 'Bob'
Run Code Online (Sandbox Code Playgroud)

编写此类查询的有效方法是什么?

Mik*_*son 5

select [key],
       value
from (select [key],
             value,
             row_number() over(partition by [key] 
                               order by priority desc) as rn
      from YourTable) as T
where rn = 1
Run Code Online (Sandbox Code Playgroud)