समस्या 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 में हर बार किए गए चयन के लिए पुनर्मूल्यांकन किया गया