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

IN क्लॉज के साथ रिकॉर्ड प्राप्त करें - IN क्लॉज में डुप्लिकेट मान होने पर

तार्किक रूप से आप जो चाहते हैं वह करना संभव नहीं है, मैं आपको ऑर्डर विकल्प का उपयोग करके समझाने की कोशिश करूंगा

 ORDER BY FIELD(`question_level`, 1, 2, 1, 2, 3, 2, 4, 2, 3, 3)

तो यहाँ हम चाहते हैं 1 फिर 2 फिर 1 question_level . के पुन:. अब तालिका में हमारे पास ये मान हैं। मैं केवल प्रश्न_स्तर # 1 के साथ स्वयं को चिंतित करूंगा जो मुझे अपनी बात दिखाने के लिए आवश्यक है।

id   | question    | question_level
______________________________________
1    | abc         | 1
______________________________________
5    | qoindos     | 1
______________________________________

जैसा कि आप देख सकते हैं कि हमारे पास question_level=1 . के लिए पंक्तियां हैं अब सिस्टम कैसे तय करेगा कि कौन सा लेवल 1 पहला है और जो दूसरा है। यह कैसे करना है यह तय करने का कोई तरीका नहीं है। तो डेटाबेस को जिस तरह से आप चाहते हैं उसे सॉर्ट करने में विफल होने के बावजूद। उस विकल्प को बनाने के लिए अधिक जानकारी के बिना, इसे क्रमबद्ध करने के लिए भी लूप बनाने का कोई तरीका नहीं है। आप जो सबसे अच्छा कर सकते हैं वह प्राथमिक कुंजी और फिर स्तर द्वारा क्रमबद्ध है। जिसकी आपको सबसे अधिक संभावना सर्वर साइड से करनी होगी।

मुझे लगता है कि आपने यहां जो गलती की है, आपको वास्तविक विशिष्ट आईडी के प्रश्नों का उपयोग करने की आवश्यकता है, यदि आपके पास प्रत्येक स्तर पर कितने प्रश्नों की सीमा है तो उसे अलग से संबोधित करने की आवश्यकता है।

उम्मीद है कि यह समझ में आता है।

यदि आप x . को चुनने का प्रयास कर रहे थे n . पर यादृच्छिक प्रश्नों की संख्या जिस स्तर पर काफी आसानी से काम किया जा सकता है। उदाहरण के लिए यदि आप चाहते थे

  • एलवी 1 पर 2x प्रश्न
  • एलवी 2 पर 4x प्रश्न
  • एलवी 3 पर 3x प्रश्न
  • एलवी 4 पर 1x प्रश्न।

यह स्तर के लिए चार सरल प्रश्नों के साथ काम किया जा सकता है, जबकि आईडी फ़ील्ड पर यादृच्छिक रूप से सॉर्ट करना और उस स्तर के लिए उपयुक्त सीमा खंड का उपयोग करना। वैसे, ये आपके प्रश्न में स्तरों की संख्या हैं।

यदि आप किसी दिए गए स्तर पर यादृच्छिक प्रश्नों का चयन करना चाहते हैं, तो आप इसे सबक्वायरी के साथ करना चाह सकते हैं। RAND() कुछ प्रदर्शन दंड हैं जिन्हें आप प्राथमिक कुंजी को यादृच्छिक रूप से चारों ओर स्कर्ट करने में सक्षम होना चाहिए और फिर आदेश देने के बाद शेष डेटा को बाहर निकालने के लिए टेबल पर शामिल होना चाहिए। लेकिन, आपको इसे बेंचमार्क करना चाहिए।

तो इसका एक उदाहरण यह होगा।

SELECT
    q1.*
FROM 
    tbl_questions AS q1
JOIN
(
    SELECT
        id
    FROM
        tbl_questions
    WHERE
        question_level = 1
    ORDER BY RAND() LIMIT 2
) AS q2 USING( id )

हालांकि मुझे यह स्वीकार करना होगा कि मैंने इसे केवल एक विचार के रूप में आजमाया नहीं है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में `सर्वर-आईडी` चर सेट करना काम नहीं करता है

  2. मैसकल डीबी को फिर से कैसे सिंक करें यदि मास्टर और दास के पास मैसकल प्रतिकृति के अलग-अलग डेटाबेस हैं?

  3. क्या एक साथ लेनदेन एक दूसरे के साथ हस्तक्षेप कर सकते हैं? php/mysql

  4. Apache Hadoop डेटा आउटपुट को Mysql डेटाबेस में स्टोर करना

  5. ट्विटर बूटस्ट्रैप मोडल में जानकारी को गतिशील रूप से लोड करें