Foxtable(狐表)用户栏目专家坐堂 → 加载指定的连续的行数据问题


  共有18185人关注过本帖树形打印复制链接

主题:加载指定的连续的行数据问题

帅哥哟,离线,有人找我吗?
mr725
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
加载指定的连续的行数据问题  发帖心情 Post By:2009/11/11 16:33:00 [只看该作者]

SELECT TOP 10 * FROM {订单}   这是加载前十行的数据,那么要加载 第十一行到第二十行的数据,该怎么表达?

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/11/11 16:38:00 [只看该作者]

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

或者用歪门邪道:

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

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


 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/11/11 17:03:00 [只看该作者]

开窗函数对我太深奥啦,表经过筛选排序后_identify 也很难保证连续了,看来要增加一个临时的序列才能行啊 ~  我试一试。

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/11/11 17:04:00 [只看该作者]

筛选和排序,不会影响identify 的连续性,删除行会有影响。

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/11/11 23:33:00 [只看该作者]

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

谢谢了~  呵呵

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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

[本帖被加为精华]
 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/11/11 23:40:00 [只看该作者]

建议用方案二,效率高一些。

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/11/12 8:47:00 [只看该作者]

呵呵,虽然不符合你的要求,但是可别忽视8楼的东西,这可不是一般的有用,而是是非常有用。

 回到顶部
总数 23 1 2 3 下一页