id name state
1  101  成功
2  102  成功
3  103  失败
4  104  其它
5  105  失败
6  106  成功
7  107  成功现在需要编写sql语句随机修改state=成功的记录,是随机,而不是连续性的修改,比如我要随机修改2条,就修改2条,请大侠帮帮忙!

解决方案 »

  1.   

    update top (2) tbName set state= '成功'
      

  2.   

    update top (2) tbName set state= '成功' order by checksum(newid())
      

  3.   


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

  4.   


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

  5.   

    可以了,代码如下:
    declare @i int
    set @i=1
    while @i<3
    beginupdate
     table
    set
     [State]='成功1'
    where
     id=(SELECT TOP 1 id From SRSMS17_Sendstate WHERE [State]='成功' and Sendmessageid='70' order by checksum(newid()))
    set @i=@i+1
    end
      

  6.   

    update top 2 tbName set state= '成功1' where state='成功' order by newid()
      

  7.   


     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