SQL Server 2000在具有三个键的表上进行分页

时间:2009-08-18 11:41:40

标签: sql sql-server-2000 paging

我一直试图解决这个问题几天没有太多运气。我在herecodeproject上找到了有关SQL Server 2000分页的大量资源。

我面临的问题是尝试在一个表上实现某种分页机制,该表具有构成主键的三个键。运算符,CustomerIdentifier,DateDisconnected。

任何帮助/指示都会非常感激

1 个答案:

答案 0 :(得分:1)

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

但是,您可以按表中的任何列对这些行进行排序 - 它不必使用复合键。它也可能运行得更快!

此外,复合键通常是一个标志。您是否有任何特殊原因不仅仅在这三列上使用具有唯一约束的代理键?