首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取postgresql中的前10个值?

如何获取postgresql中的前10个值?
EN

Stack Overflow用户
提问于 2012-12-03 05:27:04
回答 4查看 584.1K关注 0票数 344

我有一个简单的问题:

我有一个postgresql表:Scores(score integer)

我怎样才能最快地得到最高的10分?

更新:

我将多次执行此查询,并以最快的解决方案为目标。

EN

回答 4

Stack Overflow用户

发布于 2012-12-03 05:29:52

为此,您可以使用limit

代码语言:javascript
复制
select *
from scores
order by score desc
limit 10

如果性能很重要(什么时候不重要;-),请根据分数查找索引。

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

代码语言:javascript
复制
select *
from scores
order by score desc
fetch first 10 rows only

正如@Raphvanns指出的那样,这将给你字面上的first 10 rows。要删除重复的值,您必须选择distinct行,例如

代码语言:javascript
复制
select distinct *
from scores
order by score desc
fetch first 10 rows only

SQL Fiddle

票数 512
EN

Stack Overflow用户

发布于 2012-12-03 05:31:35

似乎您正在寻找带有LIMIT子句的DESC结束顺序中的ORDER BY

代码语言:javascript
复制
SELECT
 *
FROM
  scores
ORDER BY score DESC
LIMIT 10

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

票数 38
EN

Stack Overflow用户

发布于 2018-12-31 08:31:54

请注意,如果前10个值中存在平局,则您将只获得前10行,而不是提供答案的前10个值。例如:如果前5个值是10、11、12、13、14、15,但您的数据包含10、10、11、12、13、14、15,则使用LIMIT时只能得到10、10、11、12、13、14作为前5个值

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

代码语言:javascript
复制
select
  *
from
  (select
     *,
     rank() over (order by some_value_column desc) as my_rank
  from mytable) subquery
where my_rank <= 10
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13674031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档