如何获取SQL查询结果的第n行?
让我们说,我想得到这个SELECT的第二行:
SELECT * FROM table
ORDER BY 2 ASC
答案 0 :(得分:6)
您定位的SQL Server版本是什么?如果是2005或更高版本,您可以使用ROW_NUMBER生成行号并使用该号码进行选择。 http://msdn.microsoft.com/en-us/library/ms186734.aspx
WITH orderedtable AS
(
SELECT *, ROW_NUMBER() OVER (ORDER BY <your order here>) AS 'RowNumber'
FROM table
)
SELECT *
FROM orderedtable
WHERE RowNumber = 2;
答案 1 :(得分:1)
您可以使用TOP
与ORDER BY ASC
/ DESC
相结合的技巧来实现类似于MySQL LIMIT
的效果:
SELECT TOP 2 * INTO #temptable FROM table
ORDER BY 2 ASC
SELECT TOP 1 * FROM #temptable
ORDER BY 2 DESC
或没有temptable,但嵌套语句:
SELECT TOP 1 * FROM
(
SELECT TOP 2 * FROM table
ORDER BY 2 ASC
) sub
ORDER BY 2 DESC
第一次选择所有行,直到您想要实际拥有的行,而在第二个查询中,您只选择其中的第一个反向,这正是一个你想要的。
来源:http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=850&lngWId=5
答案 2 :(得分:0)
单向;
;with T(rownumber, col1, colN) as (
select
row_number() over (order by ACOLUMN) as rownumber,
col1,
colN
from
atable
)
select * from T where rownumber = 2