Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

यादृच्छिक नामों की तालिका से एसक्यूएल अपडेट

ये रही क्वेरी:

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. रेल विकास - 'लोकलहोस्ट' (10061) पर MySQL सर्वर से कनेक्ट नहीं हो सकता

  2. चर से mysql फ़ील्ड नाम

  3. डेटाबेस से एक सरणी बनाना

  4. MySQLi एक बयान तैयार करने में विफल रहा है

  5. पीडीओ ने डेटा की एक पंक्ति को हटाने से इंकार कर दिया (विशिष्ट तालिका में)