Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Atualização SQL da tabela de nomes aleatórios


Aqui está a consulta:
update TestNames t cross join
       rndnames r
    set t.fname = r.FirstName,
        t.lname = r.LastName
    where r.ID = floor(1+(rand()*600));

Ele atualiza apenas uma linha em testnames quando o id aleatório escolhido pela expressão corresponde a um id na tabela. São o id valores em rndnames todo povoado?

Se sua tabela não for muito grande e tiver um id , aqui está outra abordagem:
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:

Acho que isso também vai 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
                 );