आपकी क्वेरी एसक्यूएल मानक के खिलाफ है क्योंकि आप उन चुनिंदा सूची में कॉलम सूचीबद्ध करते हैं जिन्हें आप समूह में समूह में सूचीबद्ध नहीं करते हैं, न ही कुल कार्यों के अधीन हैं, जैसे गिनती()। MySQL कुछ sql मोड सेटिंग्स के तहत इस कार्यक्षमता की अनुमति देता है।
हालाँकि, भले ही यह कार्यक्षमता सक्षम हो, MySQL में प्रतिबंध हैं गैर-एकत्रित फ़ील्ड से चुना गया डेटा :
इसलिए, ग्रुप बाय का उपयोग करने के बजाय, आउटपुट को सीमित करने के लिए सॉर्टिंग और लिमिट क्लॉज का उपयोग करें:
select * from job
where type = 1
order by rand()
limit 1
कृपया यह भी ध्यान दें कि यह यादृच्छिक चयन विधि बहुत संसाधन गहन है, क्योंकि MySQL को पहले किसी भी अनुक्रमणिका का उपयोग किए बिना पूरे परिणामसेट को सॉर्ट करना होता है। order by rand()
. का उपयोग किए बिना किसी तालिका से यादृच्छिक रूप से डेटा का चयन करने के अन्य तरीके हैं .