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)
;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)
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |