select可以用 ORDER BY NEWID()随机提出数据。可以把随机提出的结果用update更新吗?我在网上找了一下资料,但还是没有成功。我用的sql语句是:
update Client set userid=55 where userid in (select top 25 userid from Client where userid=41 ORDER BY NEWID())这条语句我想实现的功能大概是这样的:
client是客户信息表,userid是记录对应的用户ID,我想把id号为41的这个用户的客户,随机转25条记录给id号为55的这个用户。但sql2000返回的结果居然是全部结果。(就是所有记录都更新了,并没有只随机更新25条)请高手帮帮忙,小弟不胜感激。

解决方案 »

  1.   

    select top 25 userid from Client where userid=41 ORDER BY NEWID() 
    的结果是什么?
      

  2.   


    yun,这个结果列出来好像全是41.我把()里的换成(select top 25 * from Client where userid=41 ORDER BY NEWID() )报错:
    "(当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。)"我再把()里的换成(select top 25 comid from Client where userid=41 ORDER BY NEWID() )
    "(所影响的行数为 0 行)"
    怎么回事呢?comid是唯一的,不会有重复的。
      

  3.   

    楼主你单独执行下
    select top 25 userid from Client where userid=41 ORDER BY NEWID()这句SQL看下,你发现什么了没?出来的userid全部都是41。
    然后你再用update Client set userid=55 where userid in (41),不就是把所有userid等于41的记录都改成了userid=55了吗?
    所以你要找非userid来作为修改的依据,比如有个自增ID,然后可以写成
    update Client set userid=55 where id in (select top 25 id from Client where userid=41 ORDER BY NEWID())
    这样就可以了。如果没有自增ID,先添加一个,UPDATE完后可以删除。
      

  4.   


    我用comID(这个是自增ID),但返回的结果是:
    ""(所影响的行数为 0 行)""
      

  5.   

    感谢,yixilan,已经执行成功了。把where userid in 改成:comid in就可以了。感谢大家,结贴。