Answers:
为此,您可以使用限制
select *
from scores
order by score desc
limit 10
如果性能很重要(什么时候不重要;-),则寻找得分指数。
从8.4版开始,您还可以使用标准(SQL:2008)fetch first
select *
from scores
order by score desc
fetch first 10 rows only
正如@Raphvanns指出的那样,这将为您提供first 10 rows
字面意义。要删除重复的值,必须选择distinct
行,例如
select distinct *
from scores
order by score desc
fetch first 10 rows only
fetch first X rows only
这是我一直在寻找的答案-谢谢您!
好像你正在寻找ORDER BY
在DESC
结束以便与LIMIT子句:
SELECT
*
FROM
scores
ORDER BY score DESC
LIMIT 10
当然SELECT *
可能会严重影响性能,因此请谨慎使用。
请注意,如果在前10个值中有联系,则只会获得前10行,而不是提供了答案的前10个值。例如:如果前5个值分别是10、11、12、13、14、15,但您的数据包含10、10、11、12、13、14、15,则您只会得到10、10、11、12、13、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
explain analyze
呢