sql >> Database >  >> RDS >> Mysql

SQL-update uit tabel met willekeurige namen

Hier is de vraag:

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

Het werkt alleen een rij bij in testnames wanneer de willekeurige id die door de expressie is gekozen, overeenkomt met een id in de tabel. Zijn de id waarden in rndnames allemaal bevolkt?

Als uw tafel niet erg groot is en een id . heeft , hier is een andere benadering:

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;

BEWERKEN:

Ik denk dat dit ook zal werken:

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


  1. Verbindingstime-outs voor grote MySQL-imports voorkomen

  2. MySQL-installatie

  3. Escape-tekenreeks voor gebruik bij zoeken in volledige tekst in MySQL

  4. Zullen de prestaties van SQLite afnemen als de database groter is dan 2 gigabyte?