sql语句只返回desc顺序的前5个最高值,但第5个和第6个值相同?

Posted

技术标签:

【中文标题】sql语句只返回desc顺序的前5个最高值,但第5个和第6个值相同?【英文标题】:Sql Statement that returns only the top 5 highest values in desc order, but the 5th en 6th value are the same? 【发布时间】:2013-07-31 19:06:31 【问题描述】:

我正在努力从我的 sql 语句中仅检索 5 个值。我想在单个列中检索 5 个最高的数字。问题是有些数字重复了。当第 5 和第 6 个最高数字相同时,我的 sql 语句检索 6 个值而不是 5。如果第 5 个和第 6 个数字相同,我不需要 sql 中的第 6 个数字。有人可以帮忙吗?

这是专栏:

Number
10
9
5
5
3
3
2
1

我的结果是:

Number
10
9
5
5
3
3

我想只检索前 5 个号码,不包括第 6 个号码。

这是我的 sql:

10
9
5
5
3
3

SELECT TOP 5 Number 
FROM tbl
Order by Number Desc

【问题讨论】:

你怎么得到 6 数字 - 我得到的只是 TOP 指定的那么多(即使是重复的) 还有一件事——你应该在你的问题中指定你的数据库,并在问题中标记它 你用的是什么数据库?我认为您使用“TOP 5”给出的语句不会返回超过 5 个元素,这是像 select * from tbl where Number in (select top 5 number from tbl order by number desc) 这样的更大语句的一部分吗?这是有道理的。 您似乎正在使用SQL Server(或者可能是MS Access)。这是用于 SQL Server 的 SQL Fiddle,它使用 your 脚本显示 5 行:sqlfiddle.com/#!3/5d20c/2 很好,对于 Access,请查看 this answer。简而言之,在查询中包含唯一字段。 【参考方案1】:

您可以将它们分组并显示如下:

SELECT TOP 5 Number 
FROM tbl
GROUP BY Number
Order by Number Desc

或者你可以使用DISTINCT:

SELECT DISTINCT TOP 5 Number
FROM tbl
Order by Number Desc

【讨论】:

【参考方案2】:

只需按数字 desc 排序,并将其限制为 5 个

select Number from table
order by Number desc
limit 5;

注意,这是 mysql 语法,我不知道它是否是其他数据库的“标准”。你没有指定你正在使用什么数据库。

【讨论】:

从语法看来 OP 正在使用 MS Sql Server

以上是关于sql语句只返回desc顺序的前5个最高值,但第5个和第6个值相同?的主要内容,如果未能解决你的问题,请参考以下文章

2023-01-03:超过5名学生的课。编写一个SQL查询来报告 至少有5个学生 的所有班级,返回结果不限顺序。请问sql语句如何写? +---------+ | class | +-----

SQL里面的order by语句是干啥用的?

SQL语句如何查询成绩的前三名带成绩重复的

仅显示选择 SQL 中的前 5 个字符?

java真实面试_翰竺科技有限公司_牛客网上的选择题sql面试题_查询各科总分最高的前5个学生_查询各科考试的平均分

sql语句求出第三到第五的工资