;WITH Liang AS ( SELECT TOP(2) * FROM tb ORDER BY NEWID() ) UPDATE Liang SET col = xx
;WITH Liang AS ( SELECT TOP(2) * FROM tb WHERE xx = xx ORDER BY NEWID() ) UPDATE Liang SET col = xx
sql server的UPDATE不能指定ORDER BY. 所以用CTE取巧一下.
select top 5* from T_Users order by newid()
自己试试不就知道了吗?? DECLARE @t TABLE(ID INT,col INT) INSERT @t SELECT 1,20 UNION ALL SELECT 2,10 UNION ALL SELECT 3,25 UNION ALL SELECT 4,50 UNION ALL SELECT 5,10 UNION ALL SELECT 6,20 UNION ALL SELECT 7,30;WITH Liang AS ( SELECT TOP(2) * FROM @t WHERE col > 10 ORDER BY NEWID() ) UPDATE Liang SET col = 5000;
UPDATE ....
SET ROWCOUNT 0
(
SELECT TOP(2) *
FROM tb
ORDER BY NEWID()
)
UPDATE Liang SET
col = xx
(
SELECT TOP(2) *
FROM tb
WHERE xx = xx
ORDER BY NEWID()
)
UPDATE Liang SET
col = xx
所以用CTE取巧一下.
自己试试不就知道了吗??
DECLARE @t TABLE(ID INT,col INT)
INSERT @t SELECT 1,20
UNION ALL SELECT 2,10
UNION ALL SELECT 3,25
UNION ALL SELECT 4,50
UNION ALL SELECT 5,10
UNION ALL SELECT 6,20
UNION ALL SELECT 7,30;WITH Liang AS
(
SELECT TOP(2) *
FROM @t
WHERE col > 10
ORDER BY NEWID()
)
UPDATE Liang SET
col = 5000;
SELECT * FROM @t;