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= '成功'
[其他解释]
不能连续性修改想要的结果是:
id name state
1 101 成功1 //被修改过的
2 102 成功
3 103 失败
4 104 其它
5 105 失败
6 106 成功
7 107 成功1 //被修改过的
[其他解释]
不能连续性修改想要的结果是:
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
id=(SELECT TOP 1 id From SRSMS17_Sendstate WHERE [State]='成功' and Sendmessageid='70' order by checksum(newid()))
set @i=@i+1
end
[其他解释]
update top 2 tbName set state= '成功1' where state='成功' order by newid()