Mysql
 sql >> Database >  >> RDS >> Mysql

SQl Aggiornamento dalla tabella dei Nomi casuali

Ecco la domanda:

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

Aggiorna solo una riga in testnames quando l'id casuale scelto dall'espressione corrisponde a un id nella tabella. Sono l'id valori in rndnames tutto popolato?

Se la tua tabella non è molto grande e ha un id , ecco un altro approccio:

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;

MODIFICA:

Penso che anche questo funzionerà:

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
                 );