CREATE TABLE 业务员表(ID INT,业务姓名 VARCHAR(20))
INSERT INTO 业务员表(ID,业务姓名)
SELECT 3,'XIAOMING'
UNION ALL
SELECT 7,'XIAOHEI'
CREATE TABLE 任务表(客户姓名 VARCHAR(20),业务ID INT)
INSERT INTO 任务表(客户姓名)
SELECT '李四'
UNION ALL
SELECT '李3'
UNION ALL
SELECT '李2'
UNION ALL
SELECT '李1'
-----------------
SELECT * FROM 业务员表
SELECT * FROM 任务表
---更新
--这样写会全部更新成随机取得的一个业务员ID
UPDATE 任务表 SET 业务ID=(SELECT TOP 1 ID FROM 业务员表 ORDER BY NEWID())
--写个游标?,可实现
DECLARE @NAME VARCHAR(20)
SET @NAME=''
DECLARE DD CURSOR FOR
SELECT 客户姓名
FROM 任务表
OPEN DD
FETCH NEXT FROM DD
INTO @NAME
WHILE @@FETCH_STATUS=0
BEGIN 
   begin
       UPDATE 任务表 SET 业务ID=(SELECT TOP 1 ID FROM 业务员表 ORDER BY NEWID())
       WHERE 客户姓名=@NAME
   end
    FETCH NEXT FROM DD
    INTO @NAME
END
CLOSE DD
DEALLOCATE DD----
SELECT * FROM 任务表
-----
/*
客户姓名                 业务ID
-------------------- -----------
李四                   3
李3                   7
李2                   7
李1                   3(4 行受影响)

解决方案 »

  1.   


    遍历任务表,每次随机从业务员表获取一个业务员ID修改任务表一条记录的业务员ID
      

  2.   


    前面整理的几个随机函数 你可以参考下,来自CSDN,
    SELECT CAST(RAND()*129 AS INT) Random_Number
    --#1.有重复
    SELECT TOP(20) ABS(CHECKSUM(NEWID()))%100 from master..spt_values
    --#2.无重复
    SELECT DISTINCT TOP(20) ABS(CHECKSUM(NEWID()))%123 from master..spt_values
    NEWID()函数我也只会简单的使用方法..
      

  3.   


    DECLARE @counter smallint;
    SET @counter = 1;
    WHILE @counter <=10
       BEGIN
          SELECT TOP 1 sname 
          FROM s ORDER BY NEWID()
          SET @counter = @counter + 1
       END;
    GO
    --我随机运行了十次,重复率也不是很高啊..我看你要不就做出指定每人几条记录好了吧..比如5份5份的分..什么的
    不行的话出绝招了,代码多运行几次...取重复少的...哈哈