SQL Server 2000 中第一次出现前 2 条记录,依此类推
Top 2 records for the first time and so on in SQL Server 2000
我有一个 table 叫 Test
:
ID | Name
------------
1 | ABC
2 | XYZ
3 | LMN
4 | JHF
我想要 select 前 2 行,我可以轻松做到
select top(2) * from test.
但我想要实现的是,当我再次 运行 相同的查询时,它会显示接下来的 2 条记录。
每次我 运行 相同的查询时,它都会给我接下来的 2 个结果。
我正在使用 SQL Server 2000,所以我不能使用 row_number()
和 offset
以及 fetch
。
那么我们可以在 SQL Server 2000 中使用它吗?
您可能需要使用子查询模拟 Row_Number(),如下所示:
Select (Select count(*) from #Names n
where n.[name] <= oq.[name] ) as RowN, Id, [Name]
from #names oq
并在客户每次传递时传递适当的两个数字
通过上面的查询,您可以 generate/simulate Row_Number 基于名称如下:
+------+----+------+
| RowN | Id | Name |
+------+----+------+
| 1 | 1 | ABC |
| 2 | 4 | JHF |
| 3 | 3 | LMN |
| 4 | 2 | XYZ |
+------+----+------+
在每个客户端传递从客户端发送开始编号和结束编号,并在 RowN 中的 where 条件中应用。
我有一个 table 叫 Test
:
ID | Name
------------
1 | ABC
2 | XYZ
3 | LMN
4 | JHF
我想要 select 前 2 行,我可以轻松做到
select top(2) * from test.
但我想要实现的是,当我再次 运行 相同的查询时,它会显示接下来的 2 条记录。
每次我 运行 相同的查询时,它都会给我接下来的 2 个结果。
我正在使用 SQL Server 2000,所以我不能使用 row_number()
和 offset
以及 fetch
。
那么我们可以在 SQL Server 2000 中使用它吗?
您可能需要使用子查询模拟 Row_Number(),如下所示:
Select (Select count(*) from #Names n
where n.[name] <= oq.[name] ) as RowN, Id, [Name]
from #names oq
并在客户每次传递时传递适当的两个数字
通过上面的查询,您可以 generate/simulate Row_Number 基于名称如下:
+------+----+------+
| RowN | Id | Name |
+------+----+------+
| 1 | 1 | ABC |
| 2 | 4 | JHF |
| 3 | 3 | LMN |
| 4 | 2 | XYZ |
+------+----+------+
在每个客户端传递从客户端发送开始编号和结束编号,并在 RowN 中的 where 条件中应用。