Aquí está la consulta:
update TestNames t cross join
rndnames r
set t.fname = r.FirstName,
t.lname = r.LastName
where r.ID = floor(1+(rand()*600));
Solo actualiza una fila en testnames
cuando la identificación aleatoria elegida por la expresión coincide con una identificación en la tabla. Son los id
valores en rndnames
¿todas pobladas?
Si tu tabla no es muy grande y tiene un id
, aquí hay otro enfoque:
update TestName t join
(select t.*,
(select id from rndnames order by rand() limit 1) as rndid
from testname t
) tr
on t.id = tr.id join
rndnames r
on t.rndid = r.id
set t.fname = r.FirstName,
t.lname = r.LastName;
EDITAR:
Creo que esto también funcionará:
update TestNames t cross join
rndnames r
set t.fname = r.FirstName,
t.lname = r.LastName
where r.ID = (select id
from rndnames
order by rand()
limit 1
);