例TABLE1 级别表列1ABC例 TABLE2 数据表
姓名 级别 汪峰林峰马国明房祖名
怎么把TABLE1表数据(A,B,C),随机填充到TABLE2表的"级别"列里呢。
解决方案 »
- [祝大家新年快乐] 求一个数据库设计方案!
- sqlserver查询第m行至第n行的问题。
- 这个SQL语句错在哪里?
- sp_executesql为什么不能得到数据集的值?急!!!!!!!!!!!!
- 急问!将表进行行转列,看了很多贴子还不能解决,只能在此请高手们出手相助了。
- 高手请进,急! 我的SQL SERVER客户端 怎么都连不到 服务器上,为什么?
- 求助:局域网连接问题(在线等~~~~~~)
- 存储过程,动态sql,update
- 更新中不能使用聚合,该怎么改呢
- 问一个很有意义的问题,我能否建一个触发器,当发现一个用户非法登陆10次就把它的IP记录,并给管理员发一封MAIL,是不是有什么存储过程可以记录常常IP,谢了
- 求解:MSDTC不可用错误
- 请教一个简单的数据库查询
IF object_id('tempdb..#ta') is not null
DROP table #ta;
IF object_id('tempdb..#tb') is not null
DROP table #tb;CREATE TABLE #ta ([级别] CHAR(1))
INSERT #ta ([级别])
SELECT 'A' UNION ALL
SELECT 'B' UNION ALL
SELECT 'C'CREATE TABLE #tb ([姓名] CHAR(8),[级别] CHAR(1))
INSERT #tb ([姓名])
SELECT '汪峰' UNION ALL
SELECT '林峰' UNION ALL
SELECT '马国明' UNION ALL
SELECT '房祖名'
GO;WITH a1 AS
(
SELECT *,(ROW_NUMBER() OVER(ORDER BY [级别]))-1 re FROM #ta
)
,a2 AS
(
SELECT *,(ROW_NUMBER() OVER(ORDER BY NEWID()))%3 re FROM #tb
)
UPDATE a SET [级别]=b.[级别]
FROM a2 a
INNER JOIN a1 b ON a.re=b.reSELECT * FROM #tb
create table #a(列1 varchar(20))
insert into #a values('a'),('b'),('c')create table #b(姓名 varchar(20),级别 varchar(20))insert into #b
select '汪峰',null union all
select '林峰',null union all
select '马国明',null union all
select '房祖名',null
declare @name varchar(20)
declare mycursor cursor for
select 姓名 from #b
open mycursor
fetch next from mycursor into @name
while @@FETCH_STATUS=0
begin
declare @a int,@b varchar(2)
select @a=left(rand()*10,1)
while @a>3 or @a<1
begin
select @a=left(rand()*10,1)
end
;with cte as
(
select ROW_NUMBER()over(order by 列1)id,* from #a
)
select @b=列1 from cte where id=@a
update #b set 级别=@b where 姓名=@name
fetch next from mycursor into @name
end
close mycursor
deallocate mycursor
-------------------------------------------------
姓名 级别
-------------------- --------------------
汪峰 b
林峰 c
马国明 a
房祖名 b(4 行受影响)
(
select 'A'
union all select 'B'
union all select 'C'
),
TABLE2(姓名) as
(
select '汪峰'
union all select '林峰'
union all select '马国明'
union all select '房祖名'
)
select 姓名,级别=(select top 1 级别 from (select distinct 姓名,级别 from TABLE2,TABLE1 )b where a.姓名=b.姓名 order by NEWID())
from TABLE2 a/*
姓名 级别
汪峰 A
林峰 C
马国明 B
房祖名 C
*/
IF object_id('tempdb..#ta') is not null
DROP table #ta;
IF object_id('tempdb..#tb') is not null
DROP table #tb;CREATE TABLE #ta ([级别] CHAR(1))
INSERT #ta ([级别])
SELECT 'A' UNION ALL
SELECT 'B' UNION ALL
SELECT 'C'CREATE TABLE #tb ([姓名] CHAR(8),[级别] CHAR(1))
INSERT #tb ([姓名])
SELECT '汪峰' UNION ALL
SELECT '林峰' UNION ALL
SELECT '马国明' UNION ALL
SELECT '房祖名'
GO
;WITH a1 AS
(
SELECT *,(ROW_NUMBER() OVER(ORDER BY [级别])) - 1 rownum FROM #ta
)
,a2 AS
(
select *,
row_number() over(order by rand(rn)) %
(select count(*) from #ta) as rownum
from
(
SELECT *,
ROW_NUMBER() OVER(order by getdate()) as rn
FROM #tb
)a
)
UPDATE a
SET [级别]=b.[级别]
FROM a2 a
INNER JOIN a1 b ON a.rownum=b.rownumSELECT * FROM #tb
/*
姓名 级别
汪峰 B
林峰 C
马国明 A
房祖名 B
*/