前1000行后选择记录

时间:2012-02-29 10:28:57

标签: sql-server

我想选择1000到2000行的记录,依此类推1000个。

我已经编写了查询以选择前1000条记录,但我如何从1000到2000中选择。

你可以帮我查一下可以选择那些记录的查询。

SELECT TOP 1000 *
FROM tblProductInformation p1 INNER JOIN tblProduct1 p 
ON p.productname = p1.productname 

4 个答案:

答案 0 :(得分:2)

WITH cte AS(
    SELECT ROW_NUMBER()OVER(Order By p1.productname ASC, p1.ID ASC) As RowNum
    ,p1 .*
    from tblProductInformation p1 
    inner join tblProduct1 p on p.productname = p1.productname
)
SELECT * FROM cte 
WHERE RowNum BETWEEN @FromRowNum AND @ToRowNum

答案 1 :(得分:2)

我认为你需要在特定的列上订购,例如在主键上订购。

SELECT *
FROM
(
   SELECT tbl.*, p.*, ROW_NUMBER() OVER (ORDER BY ProductID_PRIMARYKEY) rownum
  FROM  tblProductInformation as tbl INNER JOIN tblProduct1 p 
  ON p.productname = p1.productname 
) seq
WHERE seq.rownum BETWEEN 1000 AND 2000

答案 2 :(得分:0)

WITH Results AS (
    select TOP 1000 f.*, ROW_NUMBER() OVER (ORDER BY f.[type]) as RowNumber
        from tblProductInformation f
) select *
    from Results
    where RowNumber between 1001 and 2000

tutorial

答案 3 :(得分:0)

回答迟到..但对于来到这里的人来说可能会有所帮助...简单的一个 另一个简单的方法......

你可以创建一个类似的表"tblProductInformation_tmp" OR #tblProductInformation_tmp - 带有一个额外的列" UniqueID"并使该自动增加IDENTITY列。 然后只需将相同的数据插入表:

insert * into tblProductInformation_tmp 
select * from tblProductInformation 

现在简单的ryt: select * from tblProductInformation_tmp其中UniqueID< 1001 select * from tblProductInformation_tmp,其中UniqueID介于1001和2001之间

:)别忘了删除:tblProductInformation_tmp

Rigin