你可以看看SQL SERVER的开窗函数。
或者用歪门邪道:
SELECT TOP 10 * FROM {订单} Where [_Identify] < 20 Order by [_Identify] Desc
<20是估计的,你可以灵活掌握。
开窗函数对我太深奥啦,表经过筛选排序后_identify 也很难保证连续了,看来要增加一个临时的序列才能行啊 ~ 我试一试。
筛选和排序,不会影响identify 的连续性,删除行会有影响。
以下是引用狐狸爸爸在2009-11-11 17:04:00的发言:
筛选和排序,不会影响identify 的连续性,删除行会有影响。
您理解错了吧,我指得是筛选和排序后,Table的position的1-10行,11-20行(即自然行号的行) 等等。。。。。 对应的_indentify不一定是连续的!
[此贴子已经被作者于2009-11-11 22:42:39编辑过]
楼上的意思我已经懂了,看来是我表达有问题了。 我想说的是: 一个由数据填充器填充过来的表,里面的_identidy次序并不连续,要按行号来加载第一个十行、第二个十行。。。。 等, 是用_identify无法实现的。 只能在这个被填充过来的表中增加临时序号列(1、2、3、...... N),再按你们的
SELECT TOP 20 * FROM {被填充的表} where [临时序号列] not in(SELECT TOP 10 [临时序号列] FROM {被填充的表}) 来完成~
谢谢了~ 呵呵
分页方案一:(利用Not In和SELECT TOP分页)
语句形式:
SELECT TOP 10 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP 20 id
FROM TestTable
ORDER BY id))
ORDER BY ID
SELECT TOP 页大小 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP 页大小*页数 id
FROM 表
ORDER BY id))
ORDER BY ID
-------------------------------------
分页方案二:(利用ID大于多少和SELECT TOP分页)语句形式:
SELECT TOP 10 *
FROM TestTable
WHERE (ID >
(SELECT MAX(id)
FROM (SELECT TOP 20 id
FROM TestTable
ORDER BY id) AS T))
ORDER BY ID
SELECT TOP 页大小 *
FROM TestTable
WHERE (ID >
(SELECT MAX(id)
FROM (SELECT TOP 页大小*页数 id
FROM 表
ORDER BY id) AS T))
ORDER BY ID
呵呵,sql语句太难懂了。 我的目的就是要分页打印指定的行数。 这种分页 我在http://www.foxtable.com/dispbbs.asp?boardid=2&id=4941&page=1&star=2 18楼代码就可以实现分页打印了。。。。。。。。。。
[此贴子已经被作者于2009-11-12 0:09:50编辑过]
呵呵,虽然不符合你的要求,但是可别忽视8楼的东西,这可不是一般的有用,而是是非常有用。