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

बायां एकल रैंडम रिकॉर्ड MySQL में शामिल हों

RAND() . के कारण आपकी सबक्वायरी नियतात्मक नहीं है और इस प्रकार Sponsor . में प्रत्येक पंक्ति के लिए निष्पादित की जाती है तालिका और हर बार एक यादृच्छिक आईडी लौटाता है जो वर्तमान पंक्ति की आईडी से मेल खा सकता है या नहीं। तो यह केवल संभव नहीं है, कि कोई भी पंक्ति यादृच्छिक आईडी से मेल नहीं खाएगी। यह भी संभव है कि कई पंक्तियाँ होंगी।

दो प्रायोजकों के साथ नमूना डेटा के लिए सबक्वेरी निम्नलिखित मान लौटा सकती है:

  • (1, 1) पहली पंक्ति से मेल खाएगा (1=1, 2=1)
  • (1, 2) दोनों पंक्तियों से मेल खाएगा (1=1, 2=2)
  • (2, 1) किसी भी पंक्ति से मेल नहीं खाएगा (1=2, 2=1)
  • (2, 2) दूसरी पंक्ति से मेल खाएगा (1=2, 2=2)

यह सुनिश्चित करने के लिए कि सबक्वेरी केवल एक बार निष्पादित की जाती है, आप इसे SELECT क्लॉज का उपयोग कर सकते हैं। फिर परिणाम को Sponsor . के साथ व्युत्पन्न तालिका के रूप में शामिल करें टेबल:

SELECT C.*, S.Name AS SponName 
FROM (
    SELECT C.ID AS CompID, C.Name AS CompName, (
        SELECT ID FROM Sponsor WHERE Company = C.ID ORDER BY RAND() LIMIT 1
    ) as SponID
    FROM Company C
) C
LEFT JOIN Sponsor S ON S.ID = C.SponID

डेमो:http://rextester.com/LSSJT25902




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रेल सर्वेक्षण शैली आवेदन - विकल्प पर सभी उत्तर दिखाएं

  2. अंत से गिनती विशिष्ट सूचकांक पर स्ट्रिंग में सबस्ट्रिंग सम्मिलित करना। कैसे mysql में?

  3. MongoDB (MySQL उपयोगकर्ता के लिए) में कई-से-अनेक संबंधों को कैसे मॉडल करें

  4. PHP का उपयोग कर सर्वर पर छवि अपलोड करते समय अन्य जानकारी के साथ डेटाबेस में फ़ाइल नाम कैसे स्टोर करें?

  5. mySQL और PHP एन्कोडिंग