ये रही क्वेरी:
update TestNames t cross join
rndnames r
set t.fname = r.FirstName,
t.lname = r.LastName
where r.ID = floor(1+(rand()*600));
यह केवल testnames
. में एक पंक्ति को अपडेट करता है जब व्यंजक द्वारा चुनी गई यादृच्छिक आईडी तालिका में किसी आईडी से मेल खाती है। क्या id
हैं rndnames
. में मान सभी आबाद?
अगर आपकी टेबल बहुत बड़ी नहीं है और उसमें id
है , यहाँ एक और तरीका है:
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;
संपादित करें:
मुझे लगता है कि यह भी काम करेगा:
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
);