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

sql随机修改数据

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

现在需要编写sql语句随机修改state=成功的记录,是随机,而不是连续性的修改,比如我要随机修改2条,就修改2条,请大侠帮帮忙!
------解决方案--------------------
update top (2) tbName set state= '成功' order by checksum(newid())
------解决方案--------------------

 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