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

MySQL 5.7 रैंड () और IF () बिना LIMIT के अप्रत्याशित परिणाम देता है

समस्या MySQL 5.7 में शुरू किए गए परिवर्तन के कारण होती है कि कैसे (उप) प्रश्नों में व्युत्पन्न तालिकाओं का इलाज किया जाता है। परिणाम जब आपकी सबक्वेरी गैर-नियतात्मक परिणाम लौटाती है (जैसे मेरे मामले में RAND() के साथ ).
MySQL को "भौतिक" (उर्फ रिटर्न नियतात्मक परिणाम) प्राप्त करने के लिए दो आसान (और इसी तरह बदसूरत) समाधान हैं:LIMIT <high number> का उपयोग करें या GROUP BY id ये दोनों ही MySQL को सबक्वेरी को अमल में लाने और अपेक्षित परिणाम वापस करने के लिए बाध्य करते हैं।
अंतिम विकल्प derived_merge को बंद करना है optimizer_switch . में चर:derived_merge=off (सुनिश्चित करें कि अन्य सभी पैरामीटर जैसे हैं वैसे ही रहने दें)।

आगे की रीडिंग:
https://mysqlserverteam.com/व्युत्पन्न -टेबल्स-इन-mysql-5-7/
सबक्वायरी के रैंड () कॉलम का MySQL 5.7/8.0 बनाम MySQL 5.6 में हर बार किए गए चयन के लिए पुनर्मूल्यांकन किया गया




  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. MySQL VARCHAR आकार?

  3. MySQL से जुड़ने के लिए टॉमकैट को कैसे कॉन्फ़िगर करें

  4. मैं उन पंक्तियों की आईडी कैसे प्राप्त करूं जिनमें SQL में MAX और MIN मान हैं

  5. android/php रिकॉर्ड mysql में सम्मिलित नहीं हो रहा है