以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 加载指定的连续的行数据问题 (http://foxtable.net/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的开窗函数。 |
-- 作者: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 ------------------------------------- 语句形式: 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楼的东西,这可不是一般的有用,而是是非常有用。 |