I am using a SQL Server 2008 DB via SSMS2014
I am trying to update a table with test firstname and lastname values that are stored in a "randomnames" table which contains:
Id (Identity)
firstname
lastname
My current code is :
update TestTable
set
FirstName = (select firstname from randomnames where ID = ABS(Checksum(NewID()) % 4) + 1),
LastName = (select lastname from randomnames where ID = ABS(Checksum(NewID()) % 4) + 1)
;
However the above will set all records to the "same" random firstname and lastname. I would like all records to have different random firstnames and lastnames ie I need the above to run for each record rather than for all records.
I am probably missing something simple? I need to do this via some SQL in SSMS.
Advice hugely appreciated.
Thanks.
EDIT
create table testtable
(
id INT IDENTITY(1,1) PRIMARY KEY,
firstname VARCHAR(100),
lastname VARCHAR(100)
)
create table randomtab ( firstname VARCHAR(100), lastname VARCHAR(100) )
insert into testtable(firstname,lastname)
values (NULL,NULL),(NULL,NULL),(NULL,NULL),(NULL,NULL),(NULL,NULL),
(NULL,NULL),(NULL,NULL)
insert into randomtab(firstname,lastname)
values ('first1','last1'),('first2','last2'),('first3','last3'),
('first4','last4'),('first5','last5'),('first6','last6'),('first7','last7')
update testtable
set firstname = (select top 1 firstname from randomtab order by NEWID()),
lastname = (select top 1 lastname from randomtab order by NEWID())
SELECT * FROM testtable
update testtable
set firstname = (select top 1 firstname from randomtab order by NEWID()),
lastname = (select top 1 lastname from randomtab order by NEWID())
SELECT * FROM testtable