首先约定每页显示两条记录
我们看一下各页的执行情况:
第一页:
SELECT TOP 2 * FROM t_Company WHERE ID NOT IN (SELECT TOP 0 ID FROM t_Company)
SQL取出了ID号为1,2的两条记录,第一页没有问题。
第二页:
SELECT TOP 4 * FROM t_Company WHERE ID NOT IN (SELECT TOP 2 ID FROM t_Company)
出现问题,SQL取出了4条记录,ID为3,4,5,6的记录,来分析一下原因:
先看括号里的那句SELECT TOP 2 ID FROM t_Company 这个时候,SQL取出的应该是1,2
现在,查询语句变成 SELECT TOP 4 FROM t_Company WHERE ID NOT IN (1,2)
错误就在这里,SQL会取出ID不等于1和2的4条记录,而ID不等于1和2的记录有7条,所以,SQL执行了TOP 4,取出了ID是3,4,5,6的记录。
虽然在以后循环的时候,可以限制输出的记录出来弥补,但是,违背了我们的初衷,因为,随着页数的增加,取出的记录数页在增加。
-------------------------------------------------------------------------------------------
Never lose my way...