Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL Update aus Tabelle mit zufälligen Namen

Hier ist die Abfrage:

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

Es aktualisiert nur eine Zeile in testnames wenn die vom Ausdruck gewählte zufällige ID mit einer ID in der Tabelle übereinstimmt. Sind die id Werte in rndnames alle belegt?

Wenn Ihre Tabelle nicht sehr groß ist und eine id hat , hier ist ein anderer Ansatz:

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;

BEARBEITEN:

Ich denke, das wird auch funktionieren:

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