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

SQL-opdatering fra tabel med tilfældige navne

Her er forespørgslen:

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

Den opdaterer kun en række i testnames når det tilfældige id valgt af udtrykket matcher et id i tabellen. Er id værdier i rndnames alle befolket?

Hvis din tabel ikke er særlig stor, og den har et id , her er en anden tilgang:

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:

Jeg tror, ​​at dette også vil virke:

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. Hvordan kan jeg kombinere to procedurer i én for at udfylde én tabel i stedet for at hver af de to procedurer udfylder sin egen tabel?

  2. Hvordan tilføjer man kommentarer i SQL?

  3. UTC_TIMESTAMP() Eksempler – MySQL

  4. Behov for at konvertere Oracle Merge til forespørgsel til PostgreSQL