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 = '李四',用循环每次选一条就更新一条固然可以,但记录总数很大的时候效率会非常低下,请问怎样提高效率?多谢!

解决方案 »

  1.   


    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)*/
      

  2.   

    update 
      tb_test t
    set 
      set name = '李四'
    where
      exists(select top 10 id from tb_test where id=t.id order by newid()) 
      
      

  3.   

    各位别见笑,我对 sql 不怎么懂看来 update 语句要重新学过实际需求是要100万条数据随机选10万条并更新,我写了个循环,每次选一条然后更新,结果雷死了