选择放置在数据库表中间的特定数据

时间:2013-12-27 00:00:49

标签: sql sql-server stored-procedures

如何确定我的数据库中的哪个行号将选择查询 开始以选择和选择的限制,如我所愿选择位于数据库表中间的数据 我可以使用between @indexOfSelection , @limitOfSelection或类似的东西,但我不知道怎么做!

CREATE PROCEDURE ordered_articles
@LowerBound int,
@UpperBound int
    AS
    select * from orderedData where articleid between LowerBound and UpperBound ;

    with orderedData 
    (
    select * , rn = ROW_NUMBER() over ORDER BY (articleid)
    from articles
    )
    WHERE rn >= @LowerBound AND rn <= @UpperBound 
        RETURN

1 个答案:

答案 0 :(得分:2)

我猜你可以使用这样的ROW_NUMBER函数......

;WITH OrderedData
 AS
 (
  SELECT * , rn = ROW_NUMBER() OVER (ORDER BY SomeColumn)
  FROM Table_Name
 )
SELECT * FROM OrderedData
WHERE rn >= @LowerLimit AND rn <= @UpperLimit

您的查询

select * from articles 
where articleid between @indexOfSelection AND @LimitOfselection

您只需在上限下限变量和上限变量之间添加关键字AND

您的存储过程

CREATE PROCEDURE ordered_articles 
@LowerBound int, 
@UpperBound int 
AS 
BEGIN
  SET NOCOUNT ON;
   select * from articles 
   where articleid between @LowerBound and @UpperBound 
END

选择一系列行

CREATE PROCEDURE ordered_articles 
@LowerBound int, 
@UpperBound int 
AS 
BEGIN
  SET NOCOUNT ON;
WITH OrderedData
AS
 (
  SELECT * , rn = ROW_NUMBER() OVER (ORDER BY articleid)
  FROM articles
 )
SELECT * FROM OrderedData
WHERE rn >= @LowerBound AND rn <= @UpperBound

END

 EXECUTE ordered_articles 10, 15  --<-- this will return 10 to 15 number row ordered by ArticleID