Ini pertanyaannya:
update TestNames t cross join
rndnames r
set t.fname = r.FirstName,
t.lname = r.LastName
where r.ID = floor(1+(rand()*600));
Itu hanya memperbarui satu baris di testnames
ketika id acak yang dipilih oleh ekspresi cocok dengan id dalam tabel. Apakah id
nilai dalam rndnames
semua terisi?
Jika meja Anda tidak terlalu besar dan memiliki id
, berikut adalah pendekatan lain:
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;
EDIT:
Saya pikir ini juga akan berhasil:
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
);