我有一个学生表,里面有分数列。我想获得第四高分,其中表数据按升序排序。
这应该有效:
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