数据库有1000条数据,能不能第一次查询时查1-100条,第二次查询101-200条,一次类推901-1000条,程序自动查询,每查询100条然后让睡眠一段时间

qq_34001659 2016-11-25 03:48:10
数据库有1000条数据,能不能第一次查询时查1-100条,第二次查询101-200条,一次类推901-1000条,程序自动查询,每查询100条然后让睡眠一段时间
求大神知道sql语句怎么写
...全文
972 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xue16888 2016-12-01
  • 打赏
  • 举报
回复
把你要发送的记录放到另外一个表里面,这个表里加上在获取数据的时间字段,获取的时候标记此字段(建议加个读取标记字段,读取时也更改此字段),下一次读取的时候判断下最近的时间字段的时间间隔,就成了。
qq_34001659 2016-11-29
  • 打赏
  • 举报
回复
引用 12 楼 oArvin1234 的回复:
我也碰到过这个问题, 要不然就用队列像12306买票一样一个个的处理, 简单点就是写个页面 一次发100条并在数据库中标识下发送状态页面30秒钟刷新一次。
多谢大神
qq_34001659 2016-11-26
  • 打赏
  • 举报
回复
引用 10 楼 tcmakebest 的回复:
每次查都无法知道这是第几次, 这种逻辑不稳定, 何不添加一个起始行号呢.
您说的起始行号是什么意思。
-Arvin 2016-11-26
  • 打赏
  • 举报
回复
我也碰到过这个问题, 要不然就用队列像12306买票一样一个个的处理, 简单点就是写个页面 一次发100条并在数据库中标识下发送状态页面30秒钟刷新一次。
tcmakebest 2016-11-25
  • 打赏
  • 举报
回复
每次查都无法知道这是第几次, 这种逻辑不稳定, 何不添加一个起始行号呢.
qq_34001659 2016-11-25
  • 打赏
  • 举报
回复
引用 3 楼 Merry0101 的回复:
declare @i int set @i=1 while @i<最大值 Begin select * from tb1 where id>=@i and id<@i+100 set @i=@i+100 wait for delay 等待时间 End
我试一下,大神
qq_34001659 2016-11-25
  • 打赏
  • 举报
回复
引用 4 楼 KanzakiOrange 的回复:
那你这样有一个问题,新的记录不断进来的时候,你的分页就会发生变化。就不是你当初的那个顺序了。并且不建议由数据库进行休眠,很有可能因为事务挂在那里时间过长造成等待或者死锁。
我不在数据库里休眠,在程序里控制这个间隔,但是我怎么分步的取数据呢,每次取出100条,以此类推,就像分页那样取数据吗???
qq_34001659 2016-11-25
  • 打赏
  • 举报
回复
引用 6 楼 wmxcn2000 的回复:
发一批,回写一个标记,表示已发送完成。 具体间隔多长时间,这个在你的程序中控制,数据库管不了这个事儿(或者说,通过数据库来控制,并不是理想的选择)
对是这样的,间隔,我可以在程序中控制,怎么写标记啊
卖水果的net 版主 2016-11-25
  • 打赏
  • 举报
回复
发一批,回写一个标记,表示已发送完成。 具体间隔多长时间,这个在你的程序中控制,数据库管不了这个事儿(或者说,通过数据库来控制,并不是理想的选择)
道素 2016-11-25
  • 打赏
  • 举报
回复
你可以用SQL Agent创建一个Schedule,设定发定间隔 保险点,你可以将发送过的数据放在一个表里做个记录,这样也不同单行数据变更,引起数据变化等
Ginnnnnnnn 2016-11-25
  • 打赏
  • 举报
回复
那你这样有一个问题,新的记录不断进来的时候,你的分页就会发生变化。就不是你当初的那个顺序了。并且不建议由数据库进行休眠,很有可能因为事务挂在那里时间过长造成等待或者死锁。
0与1之间 2016-11-25
  • 打赏
  • 举报
回复
declare @i int set @i=1 while @i<最大值 Begin select * from tb1 where id>=@i and id<@i+100 set @i=@i+100 wait for delay 等待时间 End
qq_34001659 2016-11-25
  • 打赏
  • 举报
回复
引用 1 楼 beck464771647 的回复:
rownumber + waitfor delay '00:00:00' 是想做翻页?
我不做分页,我多短信群发的时候,遇到了联通运营商的限制,一个小时只能发送200条,之前的解决方案是控制在200条之内,可是运营商还有一个规定就是大批量发送短信之后会被屏蔽掉,所以我就想出来这么一个方法,每次从数据库里抓取100条数据,发送短信,发完之后,休眠一个小时再抓取第101-200条数据,以此类推然后去除所有的数据,发完短信,求大神支招
足球不是方的 2016-11-25
  • 打赏
  • 举报
回复
rownumber + waitfor delay '00:00:00' 是想做翻页?

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧