Mysql
 sql >> база данни >  >> RDS >> Mysql

SQl актуализация от таблица с произволни имена

Ето заявката:

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

Той актуализира само ред в testnames когато произволният идентификатор, избран от израза, съвпада с идентификатор в таблицата. Това са id стойности в rndnames всички населени?

Ако вашата таблица не е много голяма и има id , ето друг подход:

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;

РЕДАКТИРАНЕ:

Мисля, че това също ще работи:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP функция за избягване на синтаксиса на MySQL regexp

  2. Как правилно да избегнете условията на Mysql Race

  3. Съхранение на IPv6 адреси в MySQL

  4. Как да се свържете с mysql от C# през SSH

  5. Как да изтрия каскада, когато parentID и childID са в една и съща таблица?