如何使用sql查询获得第四高值


How to get the fourth highest value using sql query

我有一个学生表,里面有分数列。我想获得第四高分,其中表数据按升序排序。

这应该有效:

SELECT score FROM table ORDER BY score ASC LIMIT 1 OFFSET 4 

只需添加LIMIT子句:

LIMIT子句可用于限制返回的行数通过SELECT语句。LIMIT采用一个或两个数字参数,其必须都是非负整数常数(使用时除外准备好的陈述)。

对于两个参数,第一个参数指定第一行返回,第二行指定要返回的行。初始行的偏移量为0(不是1)

所以你会写:

SELECT column_name
FROM table_name
ORDER BY column_name
LIMIT 3, 1
SELECT score
FROM student
ORDER BY score asc
LIMIT 3, 1

对于SQL Server查询,可以使用以下statmenet:

with data as 
(
    select
        ROW_NUMBER() OVER (ORDER BY id) as rownum,
        id
    from thetable 
)
select * from data 
where rownum = 4 
order by id asc 

MSSQL不支持LIMIT。必须使用TOP关键字或通过ROW_NUMBER()这里有链接LIMIT IN MSSQL 供您参考

你可以使用ROW_NUMBER()

SELECT * FROM (
      SELECT ROW_NUMBER() OVER (ORDER BY score ASC) AS RowNumber,
      *
      FROM student
 ) AS foo
WHERE RowNumber = 4

你将获得第四高分

或者你也可以这样做

SELECT * FROM (
      SELECT ROW_NUMBER() OVER (ORDER BY score ASC) AS RowNumber,
      *
      FROM student
 ) AS foo
WHERE RowNumber >3 and <=4