declare @i intcreate table tb_test(id int, name varchar(10))set @i = 1
while @i <= 100
begin
insert into tb_test values(@i, '张三')
set @i = @i + 1
endselect top 10 * from tb_test order by newid()然后我想一次更新这10条随机选取的记录,全部 set name = '李四',用循环每次选一条就更新一条固然可以,但记录总数很大的时候效率会非常低下,请问怎样提高效率?多谢!
while @i <= 100
begin
insert into tb_test values(@i, '张三')
set @i = @i + 1
endselect top 10 * from tb_test order by newid()然后我想一次更新这10条随机选取的记录,全部 set name = '李四',用循环每次选一条就更新一条固然可以,但记录总数很大的时候效率会非常低下,请问怎样提高效率?多谢!
100条记录太多难测试, 我就总共10条, 每次取2条随机更新好了!!
-- =============================================
-- Author: T.O.P
-- Create date: 2009/11/24
-- Version: SQL SERVER 2005
-- =============================================
declare @i int create table tb_test(id int, name varchar(10)) set @i = 1
while @i <= 10
begin
insert into tb_test values(@i, '张三')
set @i = @i + 1
end UPDATE T
SET T.name = '李四'
FROM tb_test T
WHERE T.ID IN (select top 2 ID from tb_test order by newid())select * from tb_testdrop table tb_test
--测试结果:
/*
id name
----------- ----------
1 张三
2 张三
3 张三
4 张三
5 李四
6 张三
7 李四
8 张三
9 张三
10 张三(10 row(s) affected)*/
tb_test t
set
set name = '李四'
where
exists(select top 10 id from tb_test where id=t.id order by newid())