//需求:因为项目刚上传,没有票数,为了表现出一定的人气,须要在一開始把各项目的票数赋一个值 ,

但每一个项目不能一样,否则easy看出问题,呵呵 。

DECLARE @Id varchar(50)
DECLARE My_Cursor CURSOR --定义游标
FOR (SELECT Id FROM dbo.kinpanAwardProject where session=9) --查出须要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor INTO @Id; --读取第一行数据(将Id放到@Id变量中)
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @Id; --打印数据(Id)
UPDATE dbo.kinpanAwardProject SET ProTicketCount = cast( floor(rand()*30) as int)+40 WHERE Id = @Id; --更新数据,使用随机数。
FETCH NEXT FROM My_Cursor INTO @Id; --读取下一行数据(将查询的Id放到@Id变量中)
END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO

另一种使用方法,可能更加好,我觉得,假设不须要对id进行推断的话,在改动时就不须要where查询,直接改动游标当前位置会更快。

来自:http://www.cnblogs.com/zengen/archive/2011/08/10/2133423.html

DECLARE My_Cursor CURSOR --定义游标
FOR (SELECT * FROM dbo.MemberAccount) --查出须要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor ; --读取第一行数据
WHILE @@FETCH_STATUS = 0
BEGIN
--UPDATE dbo.MemberAccount SET UserName = UserName + 'A' WHERE CURRENT OF My_Cursor; --更新
--DELETE FROM dbo.MemberAccount WHERE CURRENT OF My_Cursor; --删除
FETCH NEXT FROM My_Cursor; --读取下一行数据
END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO

3、查询多个字段值的方法

DECLARE @Id varchar(50)

declare @dtime datetime

DECLARE My_Cursor CURSOR --定义游标

FOR (SELECT Id,UpdateTime FROM dbo.PropertyPro) --查出须要的集合放到游标中

OPEN My_Cursor; --打开游标

FETCH NEXT FROM My_Cursor INTO @Id,@dtime; --读取第一行数据(将Id放到@Id变量中,UpdateTime值放到@dtime中)

WHILE @@FETCH_STATUS = 0

    BEGIN

        --select @dtime= UpdateTime from PropertyPro where id=@id;

        PRINT @Id+'  '+cast(@dtime as varchar(30)); --打印数据(Id)

        update PropertyProFile set UpdateTime=@dtime where proid=@id and UpdateTime is not null;

        --UPDATE dbo.kinpanAwardProject SET ProTicketCount = cast( floor(rand()*20) as int)+70 WHERE Id = @Id; --更新数据

        FETCH NEXT FROM My_Cursor INTO @Id,@dtime; --读取下一行数据(将查询的Id放到@Id变量中)

    END

CLOSE My_Cursor; --关闭游标

DEALLOCATE My_Cursor; --释放游标

GO

条件推断再操作:

DECLARE @Id varchar(50)

--declare @votecount int

declare @votesum int

declare @voteid varchar(100)



DECLARE My_Cursor CURSOR --定义游标

FOR (SELECT distinct pp.Id FROM dbo.PropertyPro pp,PropertyCategory pc where  pc.id=pp.classid and (pc.parentid=2 or pc.parentid=3 or pc.parentid=4)) --查出须要的集合放到游标中

OPEN My_Cursor; --打开游标

FETCH NEXT FROM My_Cursor INTO @Id; --读取第一行数据(将Id放到@Id变量中)

WHILE @@FETCH_STATUS = 0

    BEGIN

        PRINT @Id; --打印数据(Id)

        set @voteid=replace(replace(replace(replace( CONVERT(varchar(100), GETDATE(), 121),'-',''),' ',''),':',''),'.','')+left(replace(newid(),'-',''),10)

        --select  @votecount=count(1) from UserVote where AwardProID=@Id

        select @votesum=sum(tickets) from UserVote where AwardProID=@Id  --查询总赞数

        

        if @votesum is null

        begin

         set @votesum=0

        end

        if @votesum<1200  --总赞数小于1200,才删除再初始化赞数

        begin

            delete from UserVote where AwardProID=@Id

            insert into dbo.UserVote(id,userid,awardproid,votedatetime,tickets)values(@voteid,'1',@Id,getdate(),cast(floor(rand()*1800) as int)+1200+@votesum)

        end

        

       -- UPDATE dbo.kinpanAwardProject SET ProTicketCount = cast( floor(rand()*20) as int)+70 WHERE Id = @Id; --更新数据

        FETCH NEXT FROM My_Cursor INTO @Id; --读取下一行数据(将查询的Id放到@Id变量中)

    END

CLOSE My_Cursor; --关闭游标

DEALLOCATE My_Cursor; --释放游标

GO

/*

select top 1000  * from uservote order by votedatetime desc

*/

mssql数据库游标批量改动符合条件的记录的更多相关文章

  1. hibernate连接mysql,查询条件中有中文时,查询结果没有记录,而数据库有符合条件的记录(解决方法)

    今天在另一台服务器上重新部署了网站,结果出现了以下问题: ——用hibernate做mysql的数据库连接时,当查询条件中有中文的时候,查询结果没有记录,而数据库中是存在符合条件的记录的. 测试了以下 ...

  2. 批量屏蔽符合条件的IP地址,支持添加白名单,IP段,增量,大于指定次数的IP

    批量屏蔽符合条件的IP地址,支持添加白名单,IP段,增量 大概的思路是利用sh,从日志中提取出来对应的IP地址,然后再交由python进行对比,判断,最终将需要添加至iptables列表中的IP写入到 ...

  3. SQL查询符合条件的记录的总数

    1. select count(*) from table;    //统计元组个数 2. select count(列名) from table;  //统计一列中值的个数 3. select co ...

  4. 批量屏蔽符合条件的IP地址《目前仅测Centos 6 版本》

    使用办法:可以将下面的sh保存到一个单独的文件中,比如ipad.sh,然后再编辑获取IP地址列表中的那段.最终的结果是需要直接获取到IP地址,一行一个,可以有多个文件,一行一个,进行重定向到指定的IP ...

  5. django在读取数据库时未筛选到符合条件的记录会报错

    (1)报错情况如下: DoesNotExist: Publisher matching query does not exist.   (2)处理方法: try:    p = Publisher.o ...

  6. mysql 随机选取一条符合条件的记录

    暂时记录下: SELECT *  FROM `kw_user` AS t1 JOIN ( SELECT ROUND( RAND( ) * ( ( SELECT MAX( id ) FROM `kw_u ...

  7. Oracle根据符合条件的数据循环批量更新

    --批量对符合条件的表记录进行更新 --aa代表查询出的符合条件数据的别名 --aa后的表示需要符合的条件 --loop后开始写更新操作 begin for aa in (select a.objec ...

  8. mysql随机查询符合条件的几条记录

    随机查询,方法可以有很多种.比如,查询出所有记录,然后随机从列表中取n条记录.使用程序便可实现.可是程序实现必须查询出所有符合条件的记录(至少是所有符合条件的记录id),然后再随机取出n个id,查询数 ...

  9. 【转载】 C#中List集合使用First方法查找符合条件的第一个元素

    在C#的List集合相关操作中,很多时候需要从List集合中查找出符合条件的第一个元素对象,如果确认在List集合中一定存在符合条件的元素,则可以使用First方法来查找,First方法调用格式为Fi ...

随机推荐

  1. 笔记之Cyclone IV第一卷第三章器件中的存储器模块

    嵌入式存储器结构由一列列 M9K 存储器模块组成,通过对这些 M9K 存储器模块进行配置,可以实现各种存储器功能,例如:RAM.移位寄存器. ROM 以及FIFO 缓冲器. M9K 存储器模块支持以下 ...

  2. Clojure学习02:语法

    相比我们传统的 c ,java ,python ,javascript等,Clojure的语法比较特别,初一看,还可能会有些不适应. 本文来介绍下Clojure的语法特点. 一.表达式 所有的Cloj ...

  3. [转]如何申请和管理一个sourceforge项目

    假如你没有贡献免费源代码的想法,就不用继续读本文了.:) 如果读者的e文不错,作者建议你直接阅读sourceforge的 howto文档,他们整理得非常周到详实.本文只是作者的使用经验,也许可以给与作 ...

  4. linux下C++开发工具

    就C++开发工具而言,与Windows下微软(VC, VS2005等)一统天下相比,Linux/Unix下C++开发,可谓五花八门,各式各样.Emacs, vi, eclipse, anjuta,kd ...

  5. oracle scn浅析

    1. 系统SCN号 查询系统SCN号的方法: select dbms_flashback.get_system_change_number from dual commit后系统SCN号会增长,但是即 ...

  6. hdu1730 Northcott Game,Nim-sum

    题解: 转化成求Nim-sum 每行黑白棋的初始间距作为每堆石子个数 假设当前为P态,则无论当前选手如何操作,下一个选手都能使其操作后的局面又变为P态. Nim-sum = 0,即P态. #inclu ...

  7. C#版二维码生成器附皮肤下载

    原文 C#版二维码生成器附皮肤下载 前言 本文所使用的二维码生成代码是谷歌开源的条形码图像处理库完成的,c#版的代码可去https://code.google.com/p/zxing/download ...

  8. docker学习笔记2:容器操作

    一.列出主机上已经创建的容器 docker ps -a 二.创建交互式容器 命令: docker run -i -t ubuntu /bin/bash 其中-i -t 表示创建一个提供交互式shell ...

  9. 在SSH框架中使用Spring的好处(转)

    以下是我总结下今天笔试中SSh中的总结: 在SSH框架中spring充当了管理容器的角色.我们都知道Hibernate用来做持久层,因为它将JDBC做了一个良好的封装,程序员在与数据库进行交互时可以不 ...

  10. Win8.1应用开发之动态磁贴

    using demo02.Common; using System; using System.Collections.Generic; using System.IO; using System.L ...