以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  加载指定的连续的行数据问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=4949)

--  作者:mr725
--  发布时间:2009/11/11 16:33:00
--  加载指定的连续的行数据问题
SELECT TOP 10 * FROM {订单}   这是加载前十行的数据,那么要加载 第十一行到第二十行的数据,该怎么表达?
--  作者:狐狸爸爸
--  发布时间:2009/11/11 16:38:00
--  

你可以看看SQL SERVER的开窗函数。

或者用歪门邪道:

SELECT TOP 10 * FROM {订单} Where [_Identify] < 20 Order by [_Identify] Desc

<20是估计的,你可以灵活掌握。


--  作者:mr725
--  发布时间:2009/11/11 17:03:00
--  
开窗函数对我太深奥啦,表经过筛选排序后_identify 也很难保证连续了,看来要增加一个临时的序列才能行啊 ~  我试一试。
--  作者:狐狸爸爸
--  发布时间:2009/11/11 17:04:00
--  
筛选和排序,不会影响identify 的连续性,删除行会有影响。
--  作者:mr725
--  发布时间:2009/11/11 22:42:00
--  
以下是引用狐狸爸爸在2009-11-11 17:04:00的发言:
筛选和排序,不会影响identify 的连续性,删除行会有影响。

您理解错了吧,我指得是筛选和排序后,Table的position的1-10行,11-20行(即自然行号的行) 等等。。。。。  对应的_indentify不一定是连续的!

[此贴子已经被作者于2009-11-11 22:42:39编辑过]

--  作者:mr725
--  发布时间:2009/11/11 23:33:00
--  
楼上的意思我已经懂了,看来是我表达有问题了。 我想说的是: 一个由数据填充器填充过来的表,里面的_identidy次序并不连续,要按行号来加载第一个十行、第二个十行。。。。 等, 是用_identify无法实现的。 只能在这个被填充过来的表中增加临时序号列(1、2、3、......  N),再按你们的SELECT TOP 20 * FROM {被填充的表} where [临时序号列]  not in(SELECT TOP 10  [临时序号列]  FROM {被填充的表}) 来完成~

谢谢了~  呵呵

--  作者:狐狸爸爸
--  发布时间:2009/11/11 23:37:00
--  
分页方案一:(利用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
--  作者:狐狸爸爸
--  发布时间:2009/11/11 23:40:00
--  
建议用方案二,效率高一些。
--  作者:mr725
--  发布时间:2009/11/12 0:07:00
--  

呵呵,sql语句太难懂了。 我的目的就是要分页打印指定的行数。    这种分页 我在http://www.foxtable.com/dispbbs.asp?boardid=2&id=4941&page=1&star=2 18楼代码就可以实现分页打印了。。。。。。。。。。

[此贴子已经被作者于2009-11-12 0:09:50编辑过]

--  作者:狐狸爸爸
--  发布时间:2009/11/12 8:47:00
--  
呵呵,虽然不符合你的要求,但是可别忽视8楼的东西,这可不是一般的有用,而是是非常有用。