sql >> Databasteknik >  >> RDS >> Mysql

SQL-uppdatering från tabellen med slumpmässiga namn

Här är frågan:

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

Den uppdaterar bara en rad i testnames när det slumpmässiga id som valts av uttrycket matchar ett id i tabellen. Är id värden i rndnames alla befolkade?

Om ditt bord inte är särskilt stort och det har ett id , här är ett annat tillvägagångssätt:

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;

EDIT:

Jag tror att detta också kommer att fungera:

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. Hur man skriver ut flera rapporter med streckkoder \ eller flera streckkoder i en rapport

  2. Azure Automation Methods

  3. Välj senaste infognings-id

  4. MySQL versionskontroll - Subversion