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

MySQL तालिका से एकल यादृच्छिक पंक्ति का चयन करने में समस्या

आपका कोड कई पंक्तियों को लौटा रहा है क्योंकि rand() प्रत्येक पंक्ति पर मूल्यांकन किया जाता है। तो, आपके पास कई मैचों का परिवर्तन है। और कोई मैच नहीं होने का मौका।

आप अपने विचार का उपयोग कर सकते हैं, लेकिन इसे इस तरह से आजमाएं:

select relusers.uname
from relusers cross join
     (selext @rand := rand()) const
where relusers.users_id = floor(@rand*46+1);

यह केवल एक यादृच्छिक मान उत्पन्न करता है और इसलिए केवल एक पंक्ति। लेकिन, केवल 46 पंक्तियों के साथ, order by विधि पर्याप्त रूप से अच्छा प्रदर्शन करे:

select relusers.uname
from relusers
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 API को मिला सकता हूँ?

  2. MySQL में हर घंटे के लिए डेटा कैसे प्राप्त करें

  3. एक निश्चित समय अवधि से पहले और बाद में मौजूद मानों की गणना करें

  4. Laravel Group By Date

  5. MySQL:MyISAM से InnoDB में कनवर्ट करने से क्वेरीज़ तेज़ हो जाती हैं...?