读书人

sql随机批改数据

发布时间: 2012-12-15 15:16:03 作者: rapoo

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


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()

读书人网 >SQL Server

热点推荐