# Two methods for parsing database pagination compare of row_number of over of and top

- 2020-05-27 07:21:55
- OfStack

Today, the teacher took us to review 1 database pagination, in general, today feel good, because the previous learning has not forgotten. All right, to get to the point,

First, let's talk about the top method

The top method is essentially taking the number of pages that you want to look up and taking the number of pages that you want to look up

Ex. :

Then, let's talk about the ROW_NUMBER()over() method

So this is essentially adding another column to the table to determine what the number is

Ex. :

That's it. That's my understanding. I hope I can help you

First, let's talk about the top method

The top method is essentially taking the number of pages that you want to look up and taking the number of pages that you want to look up

Ex. :

```
1 page 3 The data Take the first 1 Pages of data
-- The first 1 page
select top 3 * from T_news;
Take the first 5 Pages of data
-- The first 5 page
select top 3 * from T_News where id not in (select top (3*4) id from T_News) -- The point is not in on It's up to him to get rid of the first few pages
If you want to set the number of data per page and the number of pages you look at, that's fine Just add another stored procedure
create proc usp_fenye @geshu int,@yeshu int
as
begin
select top (@geshu) * from T_News where id not in (select top (@geshu*(@yeshu-1)) id from T_News)
end
```

Then, let's talk about the ROW_NUMBER()over() method

So this is essentially adding another column to the table to determine what the number is

Ex. :

```
1 page 3 The data Take the first 1 Pages of data
select * from (select *,ROW_NUMBER()over(order by id asc) as number from T_News ) as tb1
where number between 1 and 3;
The first 5 Pages of data
select * from (select *,ROW_NUMBER()over(order by id asc) as number from T_News ) as tb1
where number between 3*4+1 and 3*5;
Set the number of data per page and the number of pages you look at
create proc usp_fenye @geshu int,@yeshu int
as
begin
select * from (select *,ROW_NUMBER()over(order by id asc) as number from T_News ) as tb1
where number between @geshu*(@yeshu-1)+1 and @geshu*@yeshu;
end
```

That's it. That's my understanding. I hope I can help you