को अपडेट करें 2 टेबल/इकाइयां, बहुत सीधी परिदृश्य।MySQL: एक तालिका से रिकॉर्ड गिनें और फिर
टेबल कवियों - कॉलम: आईडी, कवि, राष्ट्र
टेबल देशों - कॉलम: आईडी, राष्ट्र, गिनती
असल में, देशों को कवियों एक की मैपिंग है स्वाभाविक रूप से कई लोगों के लिए। उदाहरण के लिए, 60 देशों से 1000 कवि हैं। कवियों में प्रत्येक कवि देश के क्षेत्र द्वारा एक राष्ट्र को सौंपा गया है जिसमें देशों में राष्ट्रों में से एक की आईडी शामिल है।
देशों की गिनती क्षेत्र कवियों इस राष्ट्र से में कवियों की संख्या में शामिल हैं।
मेरा प्रश्न है कि कवियों में देश द्वारा कवियों की संख्या की गणना करने के लिए केवल एक SQL क्वेरी का उपयोग कैसे करें और फिर उस देश की इसी गणना को अपडेट करें?
मैंने कोशिश की:
UPDATE poets, nations SET nations.count = COUNT(poets.id) GROUP BY poets.nation HAVING poets.nation = nations.id
लेकिन यह # 1064 त्रुटि देता है। कहीं भी जहां क्लॉज गठबंधन करने की कोशिश की लेकिन यह अभी भी काम करने से इंकार कर देता है।
कोई विचार?
धन्यवाद, यह चाल काम करता है! –
कृपया ध्यान दें कि बहुत बड़ी टेबल (500000+ रिकॉर्ड) के लिए यह बहुत धीमा हो सकता है। – dusoft
इसके अलावा, यदि राष्ट्र.count शून्य नहीं है, तो इसके परिणामस्वरूप चेतावनियां हो सकती हैं। इसके खिलाफ सुरक्षा के लिए एक IFNULL का उपयोग करें। अद्यतन राष्ट्र एसईटी गिनती = IFNULL (कवियों से चुनें COUNT (आईडी) जहां poets.nation = राष्ट्र.आईडी आईडी द्वारा ग्रुप), 0); –