sql >> Base de Datos >  >> RDS >> Mysql

Actualización de SQl desde la tabla de nombres aleatorios

Aquí está la consulta:

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

Solo actualiza una fila en testnames cuando la identificación aleatoria elegida por la expresión coincide con una identificación en la tabla. Son los id valores en rndnames ¿todas pobladas?

Si tu tabla no es muy grande y tiene un id , aquí hay otro enfoque:

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:

Creo que esto también 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
                 );