कौन सी आईडी लौटाई जा रही है ( 1, 2, या 3)?
ए:सर्वर उन सभी रिकॉर्डों के लिए चयन करेगा जिनके नाम वही आईडी है जो वह चाहता है (सबसे अधिक संभावना है कि लाने के लिए सबसे तेज़, जो अप्रत्याशित है)। आधिकारिक दस्तावेज उद्धृत करने के लिए:
इस लिंक में और अधिक जानकारी ।
यह क्वेरी किस आईडी से ORDER BY जा रही है (जैसा लौटाया गया है? ... प्रश्न 1 देखें)?
यह पता लगाने का कोई मतलब नहीं है कि पुनर्प्राप्त किया गया डेटा किस क्रम में लौटाया जाएगा क्योंकि आप उस परिणाम की भविष्यवाणी नहीं कर सकते जो आपको मिलने वाला है। हालांकि, यह बहुत संभव है कि आपको अप्रत्याशित आईडी कॉलम द्वारा क्रमबद्ध परिणाम मिले।
क्या आप नियंत्रित कर सकते हैं कि कौन सी आईडी लौटाई गई है/आदेश देने के लिए उपयोग की गई है? उदाहरण के लिए ग्रुप से सबसे बड़ी आईडी या पहली आईडी लौटाएं।
आपको इस बिंदु पर यह मान लेना चाहिए कि आप नहीं कर सकते। दस्तावेज़ीकरण फिर से पढ़ें।
चीजों को और अधिक स्पष्ट करना:आप अनुचित तरीके से उपयोग किए गए ग्रुप बाय क्लॉज के परिणाम की भविष्यवाणी नहीं कर सकते। MySQL के साथ मुख्य समस्या यह है कि यह आपको इसे गैर-मानक तरीके से उपयोग करने की अनुमति देता है लेकिन आपको यह जानने की आवश्यकता है कि उस सुविधा का उपयोग कैसे किया जाए। इसके पीछे मुख्य बिंदु उन क्षेत्रों के आधार पर समूह बनाना है जिन्हें आप जानते हैं कि वे हमेशा समान रहेंगे। ईजी:
SELECT id, name, COUNT( * ) AS frequency
FROM table
GROUP BY id
यहाँ, आप जानते हैं name
id
. के रूप में अद्वितीय होगा कार्यात्मक रूप से name
निर्धारित करता है . तो जो परिणाम आप जानते हैं वह मान्य है। यदि आप नाम से भी समूहित करते हैं तो यह क्वेरी अधिक मानक होगी लेकिन MySQL में थोड़ा खराब प्रदर्शन करेगी।
अंतिम नोट के रूप में, इस बात का ध्यान रखें कि, मेरे अनुभव में चयनित और गैर-समूहीकृत क्षेत्रों के लिए उन गैर-मानक प्रश्नों के परिणाम आमतौर पर वही होते हैं जो आपको GROUP BY
लागू करने पर मिलते हैं। और फिर एक ORDER BY
उस मैदान पर। इसलिए कई बार यह लगता है काम करने के लिए। हालाँकि, यदि आप परीक्षण करना जारी रखते हैं, तो आपको अंततः पता चलेगा कि ऐसा 95% मामलों में होता है। और आप उस नंबर पर भरोसा नहीं कर सकते।