Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pembaruan SQL dari tabel Nama acak

Ini pertanyaannya:

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

Itu hanya memperbarui satu baris di testnames ketika id acak yang dipilih oleh ekspresi cocok dengan id dalam tabel. Apakah id nilai dalam rndnames semua terisi?

Jika meja Anda tidak terlalu besar dan memiliki id , berikut adalah pendekatan lain:

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:

Saya pikir ini juga akan berhasil:

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. Apakah ada cara yang lebih cepat untuk memuat mysqldumps?

  2. Buat Prosedur Tersimpan dengan PDO di PHP

  3. Kolom 'Perbarui Timestamp' MySQL - Pemicu

  4. Laravel 4 tidak dapat menjalankan seluruh kueri RAW

  5. Kueri dari dua tabel dalam laporan