इसके लिए आपको किसी लूप या फंक्शन की जरूरत नहीं है।
आप जो करना चाहते हैं वह एक ही अपडेट स्टेटमेंट में किया जा सकता है क्योंकि प्रति क्षेत्र की कुल गणना की गणना एकल एकत्रीकरण के साथ की जा सकती है:
SELECT salesterritoryid, count(*) as total_count
FROM salesperson_t
group by salesterritoryid
इसके बाद इसे क्षेत्र तालिका को अद्यतन करने के लिए स्रोत के रूप में उपयोग किया जा सकता है:
UPDATE territory2_t
SET total_sales_person = t.total_count
FROM (
SELECT salesterritoryid, count(*) as total_count
FROM salesperson_t
group by salesterritoryid
) t
WHERE territoryid = t.salesterritoryid;
एक विकल्प जो समझने में आसान हो सकता है, लेकिन बड़ी तालिकाओं के लिए धीमा होगा, एक सह-संबंधित उप-क्वेरी के साथ एक अद्यतन है
UPDATE territory2_t tg
SET total_sales_person = (select count(*)
from salesperson_t sp
where sp.salesterritoryid = tg.territoryid);
पहले और दूसरे अपडेट में थोड़ा अंतर है:दूसरा कुल_सेल्स_पर्सन को 0
में अपडेट करेगा (शून्य) उन क्षेत्रों के लिए जहां कोई विक्रेता नहीं है। पहला वाला केवल उन क्षेत्रों की संख्या को अपडेट करेगा जो वास्तव में विक्रेता तालिका में मौजूद हैं।