选择前n行(如果少于n行,则选择最后一行)

时间:2014-02-28 14:22:48

标签: sql postgresql

我有一个数字score的表,我想选择第1000个最高分的值。通常我会做

SELECT score FROM table ORDER BY score DESC LIMIT 1 OFFSET 999;

但是,表中可能还没有1000行。当然我可以先COUNT(*),但还有另一种方式吗?我想获得第1000行,如果还没有1000行,我想获得最后一行。

1 个答案:

答案 0 :(得分:2)

select score
from (
    select score
    from table
    order by score desc
    limit 1000
) s
order by score
limit 1