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

PostgreSQL:लूप के लिए तालिका पंक्तियों के माध्यम से पुनरावृति करें, वर्तमान पंक्ति के आधार पर स्तंभ मान प्राप्त करें

इसके लिए आपको किसी लूप या फंक्शन की जरूरत नहीं है।

आप जो करना चाहते हैं वह एक ही अपडेट स्टेटमेंट में किया जा सकता है क्योंकि प्रति क्षेत्र की कुल गणना की गणना एकल एकत्रीकरण के साथ की जा सकती है:

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 में अपडेट करेगा (शून्य) उन क्षेत्रों के लिए जहां कोई विक्रेता नहीं है। पहला वाला केवल उन क्षेत्रों की संख्या को अपडेट करेगा जो वास्तव में विक्रेता तालिका में मौजूद हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या हाइबरनेट एनोटेशन का उपयोग करके प्रारंभिक रूप से स्थगित बाधा को परिभाषित किया जा सकता है?

  2. PostgreSQL क्रॉसस्टैब क्वेरी

  3. योग और उत्पन्न श्रृंखला postgresql में काम नहीं करती है

  4. स्ट्रिंग कॉलम पर पोस्टग्रेस्क्ल इंडेक्स

  5. डेटाबेस से अनुक्रमिक डेटा पुनर्प्राप्त करने का सबसे तेज़ तरीका क्या है?