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

MySQL के साथ ग्रुपिंग करते समय किस रो के फील्ड्स लौटाए जाते हैं?

कौन सी आईडी लौटाई जा रही है ( 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% मामलों में होता है। और आप उस नंबर पर भरोसा नहीं कर सकते।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP mysqli_real_escape_string खाली स्ट्रिंग लौटा रहा है

  2. मैं कैसे जांच सकता हूं कि PHP के साथ एक MySQL तालिका मौजूद है या नहीं?

  3. HTML इको के अंदर चर के साथ दोहरे उद्धरण चिह्नों से बचें

  4. FIND_IN_SET दो तारों के साथ

  5. एफपीडीएफ के साथ बनाया गया पीडीएफ और पीडीएफ को कैसे सहेजना और पुनर्प्राप्त करना है