Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 选择下一组前30条记录_Sql Server - Fatal编程技术网

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我建议你一种分页的方法。这就是我要找的。在查询中使用的查询。它工作得很好。谢谢