日期:2014-05-17  浏览次数:20392 次

sql随机修改数据

id name state
1  101  成功
2  102  成功
3  103  失败
4  104  其它
5  105  失败
6  106  成功
7  107  成功

现在需要编写sql语句随机修改state=成功的记录,是随机,而不是连续性的修改,比如我要随机修改2条,就修改2条,请大侠帮帮忙!
------最佳解决方案--------------------

 UPDATE  a
 SET     a.STATE = b.state
 FROM    TB a
         INNER JOIN ( SELECT TOP ( 2 )
                             *
                      FROM   TB
                      WHERE  STATE <> '成功'
                      ORDER BY CHECKSUM(NEWID())
                    ) b ON a.id = b.id
                           AND a.NAME = b.name

------其他解决方案--------------------
update top (2) tbName set state= '成功' order by checksum(newid())
------其他解决方案--------------------
update top (2) tbName set state= '成功'
------其他解决方案--------------------
引用:
update top (2) tbName set state= '成功' order by checksum(newid())


不能连续性修改想要的结果是:
id name state
1  101  成功1             //被修改过的
2  102  成功
3  103  失败
4  104  其它
5  105  失败
6  106  成功
7  107  成功1              //被修改过的

------其他解决方案--------------------
引用:
update top (2) tbName set state= '成功'


不能连续性修改想要的结果是:
id name state
1  101  成功1             //被修改过的
2  102  成功
3  103  失败
4  104  其它
5  105  失败
6  106  成功
7  107  成功1              //被修改过的
------其他解决方案--------------------
可以了,代码如下:
declare @i int
set @i=1
while @i<3
begin

update
 table
set
 [State]='成功1'
where