使用随机名称更新SQL Server表

使用随机名称更新SQL Server表,sql,sql-server,Sql,Sql Server,我正在尝试以下方法: update [Employees] set Last_User = (select top 1 name from (select 'John' as name union select 'Tim' as name union select 'Jane' as name union select 'Jack' as name union select 'Steve' as name union select 'Ann' as name ) as names o

我正在尝试以下方法:

update [Employees] set Last_User = 

(select top 1 name from 
(select 'John' as name 
union select 'Tim' as name
union select 'Jane' as name
union select 'Jack' as name
union select 'Steve' as name
union select 'Ann' as name
) 

as names order by newid())
但所有行都要使用相同的名称。我怎样才能改变它

注意:名称是在查询中输入的,不来自其他表


谢谢

您可以尝试以下方法:

declare  @Employees table (last_user nvarchar(100))
insert @Employees values('a')
insert @Employees values('b')
insert @Employees values('c')

declare @temp table(name nvarchar(100))
insert into @temp values('John')
insert into @temp values('Tim')
insert into @temp values('Jane')
insert into @temp values('Jack')
insert into @temp values('Steve')
insert into @temp values('Ann')

update @Employees set Last_User = 

(select top 1 name from 
    @temp as names order by newid())

select * from @Employees

您试图更新整个列,而不是更新每一行,因此生成的第一个值将更新到所有行,您可以使用T-SQL执行预期任务

DECLARE @counter int = 1

WHILE @counter <= (SELECT COUNT(1) FROM [Employees]) --or any speific row set you want to modify
BEGIN

UPDATE a
 set Last_User = 
(SELECT top 1 name from 
(SELECT 'John' as name 
UNION SELECT 'Tim' AS name
UNION SELECT 'Jane' AS name
UNION SELECT 'Jack' AS name
UNION SELECT 'Steve' AS name
UNION SELECT 'Ann' AS name
) 

AS names ORDER BY NEWID())
 FROM (SELECT *,ROW_NUMBER() OVER (ORDER BY Last_User)rnum FROM [Employees])a
WHERE a.rnum = @counter

SET @counter = @counter + 1

END
DECLARE@counter int=1

而@counter you do
update Employees='随机选取的名字
意味着所有员工都会得到这个随机的名字。可能是重复的谢谢,但我有点困惑。我的桌名在哪里?什么是a,b,c?嗨,约翰逊,我用一个临时表[@Employees]代替了[Employees]表,因为我只是想展示一下我们如何解决这个问题。您可以通过您的表简单地重播[@Employees]。关于‘a’、‘b’、‘c’是样本数据。我尝试了这两种建议。prenesh u的一个为每行提供随机值。这个解决方案(Edward N)没有。相反,它为所有行提供相同的值。我的算法情况略有不同,所以我不能说这是否是问题所在,但是这使用了一个更新,我认为它是针对一列的,但是prenesh的算法实际上是分别对待每一行的。