如何确定我的数据库中的哪个行号将选择查询 开始以选择和选择的限制,如我所愿选择位于数据库表中间的数据
我可以使用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
答案 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