如何在postgresql中获得前10个值?

Joe*_*lin 212 sql postgresql sql-limit

我有一个简单的问题:

我有一个postgresql数据库:Scores(score integer).

我怎样才能获得最快10分?

更新:

我将多次执行此查询,并且我的目标是获得最快的解决方案.

Ola*_*che 325

为此你可以使用限制

select *
from scores
order by score desc
limit 10
Run Code Online (Sandbox Code Playgroud)

如果表现很重要(什么时候不是;-)寻找得分指数.


从8.4版开始,您也可以使用标准(SQL:2008)fetch first

select *
from scores
order by score desc
fetch first 10 rows only
Run Code Online (Sandbox Code Playgroud)

  • `仅获取前 X 行`是我一直在寻找的答案——感谢来自遥远未来的你! (7认同)

Grz*_*lik 35

好像你正在寻找ORDER BYDESC结束以便与LIMIT子句:

SELECT
 *
FROM
  scores
ORDER BY score DESC
LIMIT 10
Run Code Online (Sandbox Code Playgroud)

当然SELECT *可能会严重影响性能,因此请谨慎使用.


Rap*_*nns 8

请注意,如果前 10 个值之间存在联系,您将只获得前 10 行,而不是提供答案的前 10 个。例如:如果前 5 个值是 10, 11, 12, 13, 14, 15 但你的数据包含 10, 10, 11, 12, 13, 14, 15 你只会得到 10, 10, 11, 12, 13, 14 作为您的前 5 名LIMIT

这是一个解决方案,如果有平局,它将返回超过 10 行,但您将获得some_value_column技术上位于前 10 名的所有行。

select
  *
from
  (select
     *,
     rank() over (order by some_value_column desc) as my_rank
  from mytable) subquery
where my_rank <= 10
Run Code Online (Sandbox Code Playgroud)