sql 循环修改表中某一列的值 在线等 ~

时间:2021-07-19 09:51:44
先把表截图贴上,如下:
[img=http://hi.csdn.net/attachment/201103/18/0_13004203290u0l.gif ][/img]


现在要做的是:红色圈中的部分,把ptrq这个字段,全部重新修改,修改后具体是多少是不固定的,但肯定还是一个int的数字,如何写一个函数或者存储过程,来循环修改ptrq这个字段的值。
谢过 ~

10 个解决方案

#1


你用什么列作标识列?

#2


update 表 set ptrq=cast(2134243*rand() as int)

#3



update 表 set ptrq=cast(ptrq*rand() as int)

#4


另外,你那不固定的值究竟是多少?

#5


你等于什么都没说

#6


update tb set ptrq=cast(ptrq*rand() as int)

#7


不固定的值,是我从其他表中获取过来的数据。

#8



   DECLARE  CURSOR1    CURSOR    FOR  SELECT * FROM TABLE1
   OPEN  CURSOR1 
   FETCH NEXT FROM   CURSOR1   INTO  这里声明变量接收你所要的值
     WHILE @@FETCH_STATUS=0
     BEGIN 
             UPDATE TABLE1 SET PRTQ=@PRTQ WHERE ID = (SELECT ID FROM TABLE2 WHERE  条件 )
     END
 

#9


说是背景吧。

这是一个投票数量的字段,之前因为投票这块没做太多的要求,所以导致现在网络投票已达几百万(刷票者居多)。

现在客户提出要求,要改这一块。投票的详细信息我用另一个表来记录了,所以我会根据条件查询出不少刷票的记录,然后用总记录减去这个真是的投票记录,剩下的就是刷票的记录了。

而ptrq这个字段,是包括网络投票和手机投票2个投票方式的总数量,所以我只能通过这种方式来修改他的真是投票记录。

方式就是:总投票记录-刷票的记录

之后我再把这个数据更新到ptrq这个字段。

不知说的明白不 ~

#10


触发器

#1


你用什么列作标识列?

#2


update 表 set ptrq=cast(2134243*rand() as int)

#3



update 表 set ptrq=cast(ptrq*rand() as int)

#4


另外,你那不固定的值究竟是多少?

#5


你等于什么都没说

#6


update tb set ptrq=cast(ptrq*rand() as int)

#7


不固定的值,是我从其他表中获取过来的数据。

#8



   DECLARE  CURSOR1    CURSOR    FOR  SELECT * FROM TABLE1
   OPEN  CURSOR1 
   FETCH NEXT FROM   CURSOR1   INTO  这里声明变量接收你所要的值
     WHILE @@FETCH_STATUS=0
     BEGIN 
             UPDATE TABLE1 SET PRTQ=@PRTQ WHERE ID = (SELECT ID FROM TABLE2 WHERE  条件 )
     END
 

#9


说是背景吧。

这是一个投票数量的字段,之前因为投票这块没做太多的要求,所以导致现在网络投票已达几百万(刷票者居多)。

现在客户提出要求,要改这一块。投票的详细信息我用另一个表来记录了,所以我会根据条件查询出不少刷票的记录,然后用总记录减去这个真是的投票记录,剩下的就是刷票的记录了。

而ptrq这个字段,是包括网络投票和手机投票2个投票方式的总数量,所以我只能通过这种方式来修改他的真是投票记录。

方式就是:总投票记录-刷票的记录

之后我再把这个数据更新到ptrq这个字段。

不知说的明白不 ~

#10


触发器