我如何随机更新我的2行,在SQL Server中有这个编码F01 = 1和F03 = 1

Far*_*ari 0 sql sql-server sql-server-2008

如何从F01=1 And F02=1包含5行的表中具有此条件的其他4行中随机更新2 行?我想要在执行代码后更改的行数.

像这样

ID   F01   F02         ID    F01    F02
1    0     1           1     0      1
2    1     1           2     A      1
3    1     1      -->  3     1      1
4    1     1           4     1      1
5    1     1           5     A      1 
最后我在另一张表中有2号和5号.

这些数字只是例如.

我不能使用newid(),因为SQL表示你不能在子查询中使用order by.

这是我的代码不起作用

Update Chess.dbo.Sheet1$ 
set F01 = A 
Where ID in (select top 2 ID 
             from Chess.dbo.Sheet1$ 
             where (select ID from Chess.dbo.Sheet1$ order by NEWID())
Run Code Online (Sandbox Code Playgroud)

M.A*_*Ali 7

;WITH CTE AS 
(
 SELECT TOP 30 *
 FROM TableName 
 WHERE F01 = 1 AND F02 = 1
 ORDER BY NEWID()
)
UPDATE CTE 
 SET ColumnName = 'NewValue'
Run Code Online (Sandbox Code Playgroud)

要么

UPDATE t
 SET t.ColumnName = 'NewValue'
FROM (
     SELECT TOP 30 *
     FROM TableName 
     WHERE F01 = 1 AND F02 = 1
     ORDER BY NEWID()
    )t
Run Code Online (Sandbox Code Playgroud)

编辑

如果您希望在更新随机选定的行后更新行ID.

你可以做到以下几点

 DECLARE @Table TABLE (ID INT);

;WITH CTE AS 
(
 SELECT TOP 30 *
 FROM TableName 
 WHERE F01 = 1 AND F02 = 1
 ORDER BY NEWID()
)
UPDATE CTE 
 SET ColumnName = 'NewValue'
OUTPUT inserted.ID INTO @Table(ID)

-- now select from the table variable 
SELECT * FROM @Table 
Run Code Online (Sandbox Code Playgroud)