Sql server 选择下一组前30条记录
这是我的疑问:Sql server 选择下一组前30条记录,sql-server,Sql Server,这是我的疑问: SELECT Top 30 * FROM (SELECT *, Row_number() OVER( PARTITION BY EntityPicURL ORDER BY FavoriteCount desc) AS RN FROM TweetEntity WHERE HashTag LIKE '%%23RIPOlgaSyahputra%') A WHERE
SELECT Top 30 *
FROM (SELECT *, Row_number() OVER( PARTITION BY EntityPicURL
ORDER BY FavoriteCount desc) AS RN
FROM TweetEntity
WHERE HashTag LIKE '%%23RIPOlgaSyahputra%') A
WHERE RN = 1
ORDER BY FavoriteCount desc , LastModifieddateTime desc
这将选择列的前30个唯一记录。现在我想选择接下来的30条记录31-60
这是我之前使用的一种查询,但它返回了EntityTypeCurl的许多重复条目
现在,我想结合第一个查询的值,包括e.row_no>30和e.row_no,您可以使用OFFSET来获取这样的记录
您可以从下面的查询中选择30条记录
Select * FROM TweetEntity
ORDER BY FavoriteCount desc OFFSET 0 ROWS FETCH NEXT 30 ROWS ONLY
Select * FROM TweetEntity
ORDER BY FavoriteCount desc OFFSET 30 ROWS FETCH NEXT 30 ROWS ONLY
您可以从下面的查询中选择接下来的30条记录
Select * FROM TweetEntity
ORDER BY FavoriteCount desc OFFSET 0 ROWS FETCH NEXT 30 ROWS ONLY
Select * FROM TweetEntity
ORDER BY FavoriteCount desc OFFSET 30 ROWS FETCH NEXT 30 ROWS ONLY
注意:偏移量将在Sql server 2012上工作+
使用OFFSET-FETCH的限制
ORDERBY必须使用OFFSET和FETCH子句。
OFFSET子句对于FETCH是必需的。你永远不能使用,按…
取来
在同一查询中,TOP不能与OFFSET和FETCH组合使用
表示
偏移量/提取行数表达式可以是任何算术、常量、,
或将返回整数值的参数表达式。这个
行计数表达式不支持标量子查询。
可以像这样使用嵌套的CTE:
;WITH CTE1 AS (
SELECT *,
ROW_NUMBER() OVER(PARTITION BY EntityPicURL
ORDER BY FavoriteCount desc) AS RN
FROM TweetEntity
WHERE HashTag like '%%23RIPOlgaSyahputra%'
), CTE2 AS (
SELECT *,
ROW_NUMBER() OVER (ORDER FavoriteCount DESC,
LastModifiedDateTime DESC) AS row_no
FROM CTE1
WHERE RN = 1
)
SELECT *
FROM CTE2
WHERE row_no > 30 and row_no <=60
CTE2将在CTE1的按RN=1过滤的结果集上应用行号 您正在使用的sql server版本可能与的版本重复,请参阅它不是重复版本。我的困惑是将两个查询合并在一起,因为两个查询都有行号。请发布您从尝试的查询中获得的结果,以及它们与您想要的结果的不同之处。如果您查看我的第二个查询,它有分页。然而,我的问题是将第一个查询放入分页,因为我无法合并两个行号properly@Venkat我建议你一种分页的方法。这就是我要找的。在查询中使用的查询。它工作得很好。谢谢