sql >> Databáze >  >> RDS >> Mysql

Aktualizace SQL z tabulky náhodných jmen

Zde je dotaz:

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

Aktualizuje pouze řádek v testnames když náhodné id zvolené výrazem odpovídá id v tabulce. Jsou id hodnoty v rndnames všechny obydlené?

Pokud váš stůl není příliš velký a má id , zde je další přístup:

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:

Myslím, že to bude také fungovat:

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. codeIgniter místo toho použijte mysql_real_escape_string(). Problém s připojením k databázi

  2. SQL cizí klíč:Vše, co potřebujete vědět o operacích cizího klíče

  3. Jak se připojit k MySQL z příkazového řádku

  4. Python MySql Insert nefunguje