Hier is de vraag:
update TestNames t cross join
rndnames r
set t.fname = r.FirstName,
t.lname = r.LastName
where r.ID = floor(1+(rand()*600));
Het werkt alleen een rij bij in testnames
wanneer de willekeurige id die door de expressie is gekozen, overeenkomt met een id in de tabel. Zijn de id
waarden in rndnames
allemaal bevolkt?
Als uw tafel niet erg groot is en een id
. heeft , hier is een andere benadering:
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;
BEWERKEN:
Ik denk dat dit ook zal werken:
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
);