Đây là truy vấn:
update TestNames t cross join
rndnames r
set t.fname = r.FirstName,
t.lname = r.LastName
where r.ID = floor(1+(rand()*600));
Nó chỉ cập nhật một hàng trong testnames
khi id ngẫu nhiên được chọn bởi biểu thức khớp với một id trong bảng. Là id
các giá trị trong rndnames
tất cả đều được điền?
Nếu bảng của bạn không lớn lắm và nó có id
, đây là một cách tiếp cận khác:
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;
CHỈNH SỬA:
Tôi nghĩ điều này cũng sẽ hoạt động:
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
);