几天来,我一直在尝试解决这个问题,但运气不佳。我在这里和codeproject都发现了大量关于 SQL Server 2000 上的分页的资源。
我面临的问题是试图在一个表上实现某种分页机制,该表具有三个构成主键的键。运算符、客户标识符、DateDisconnected。
任何帮助/指针将不胜感激
几天来,我一直在尝试解决这个问题,但运气不佳。我在这里和codeproject都发现了大量关于 SQL Server 2000 上的分页的资源。
我面临的问题是试图在一个表上实现某种分页机制,该表具有三个构成主键的键。运算符、客户标识符、DateDisconnected。
任何帮助/指针将不胜感激
SQL Server 2000 没有方便的row_number
功能,因此您必须使用子查询自动生成行号列,如下所示:
select
*
from
(select
*,
(select count(*) from tblA where
operator < a.operator
or (operator = a.operator
and customeridentifier < a.customeridentifier)
or (operator = a.operator
and customeridentifier = a.customeridentifier
and datedisconnected <= a.datedisconnected)) as rownum
from
tblA a) s
where
s.rownum between 5 and 10
order by s.rownum
但是,您可以按表中的任何列对这些行进行排序——它不必使用复合键。它可能也会运行得更快!
此外,复合键通常是一个标志。您不只是在这三列上使用具有唯一约束的代理键有什么特别的原因吗?