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 行受影响)
解决方案 »
- 关于成绩排名问题,急
- sql2000 数据合并问题
- 统计问题
- 怎样自动把一台sql2000的数据备份到另一台sql2000?
- SQL2000在安装选择,验证模式后自动退出.
- LEFT OUTER JOIN 和 LEFT JOIN是一样的意思吗?
- SQL SERVER 排序问题
- 如何将 xp_instance_regread N'HKEY_LOCAL_MACHINE',N'Software\Microsoft\MSSQLServer\SETUP',N'SQLDataRoot'返回的Data字段存入到变量
- 我是初学者,问一个关于SQL的初级问题。望各位大虾帮助。
- SQL Server的某个表,有几个用户都有权限操作,如何查看被谁修改过?
- update语句更新多个字段时,SQL语句怎么写?
- windows7 安装sqlserver2000 pro版本报不兼容,到底能不能装啊?
遍历任务表,每次随机从业务员表获取一个业务员ID修改任务表一条记录的业务员ID
前面整理的几个随机函数 你可以参考下,来自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()函数我也只会简单的使用方法..
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份的分..什么的
不行的话出绝招了,代码多运行几次...取重复少的...哈哈