Pau*_*aul 3 t-sql sql-server pagination sql-server-2005
如何限制查询的结果(在我的情况下约为60K行)并仅从X行选择Y行?
如果我使用ROW_NUMBER()我不喜欢我的查询,因为它涉及2个选择查询..一个返回行,一个选择我需要的部分
更新:
这是我现在使用的查询:
SELECT *
FROM (
SELECT row_number() OVER (ORDER BY E.LastChangeDate DESC) AS row, E.*, U.[DisplayName] AS EntryCreatorDisplayName, U.[Email] AS EntryCreatorEmail
FROM entries e
INNER JOIN
users u
ON e.fk_user= u.id
WHERE e.EntryRank = 2
AND u.Administrator = 1
) as TableWithRows
WHERE (row >= 31 AND row <= 60)
Run Code Online (Sandbox Code Playgroud)
WITH q AS
(
SELECT TOP (@Y) m.*, ROW_NUMBER() OVER (ORDER BY mycol) AS rn
FROM mytable m
ORDER BY
mycol
)
SELECT *
FROM q
WHERE rn >= @X
Run Code Online (Sandbox Code Playgroud)
在SQL Server 2000:
SELECT *
FROM (
SELECT TOP (@Y - @X) *
FROM (
SELECT TOP (@X) *
FROM mytable
ORDER BY
mycol
) q
ORDER BY
mycol DESC
) q2
ORDER BY
mycol
Run Code Online (Sandbox Code Playgroud)