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

पुनरावर्ती क्वेरी पोस्टग्रेज के साथ पर संभावित स्पष्टीकरण

इसे सामान्य तालिका व्यंजक कहा जाता है और यह SQL में पुनरावर्ती क्वेरी को व्यक्त करने का एक तरीका है:

t(n) सीटीई के नाम को t . के रूप में परिभाषित करता है , n . नामक एक कॉलम के साथ . यह एक व्युत्पन्न तालिका के लिए एक उपनाम के समान है:

select ... 
from (
  ...
) as t(n);

रिकर्सन मान 1 से शुरू होता है (यह values (1) . है भाग) और फिर 99 तक पहुंचने तक इसमें एक को पुनरावर्ती रूप से जोड़ता है। तो यह 1 से 99 तक की संख्याएँ उत्पन्न करता है। फिर अंतिम क्वेरी फिर उन सभी संख्याओं का योग करती है।

n एक कॉलम नाम है, नहीं एक "चर" और "असाइनमेंट" उसी तरह से होता है जैसे कोई डेटा पुनर्प्राप्ति।

WITH RECURSIVE t(n) AS (
    VALUES (1) --<< this is the recursion "root"
  UNION ALL
    SELECT n+1 FROM t WHERE n < 100 --<< this is the "recursive part"
)
SELECT sum(n) FROM t;

यदि आप रिकर्सन को "अनरोल" करते हैं (जो वास्तव में एक पुनरावृत्ति है) तो आप कुछ इस तरह से समाप्त हो जाएंगे:

select x.n + 1
from (
  select x.n + 1
  from (
    select x.n + 1
    from (
      select x.n + 1
      from (
         values (1)
      ) as x(n) 
    ) as x(n)
  ) as x(n)
) as x(n)

मैनुअल में अधिक विवरण:
https://www .postgresql.org/docs/current/static/queries-with.html



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आप Postgres . में तार कैसे उद्धृत करते हैं?

  2. समूह में सबसे हालिया रिकॉर्ड खोजने के लिए एसक्यूएल

  3. पोस्टग्रेज़ सभी स्तंभों का चयन करता है लेकिन एक स्तंभ द्वारा समूहित करता है

  4. Sqlalchemy और PostgreSql:भविष्य में संघर्ष के बिना प्राथमिक कुंजी को मैन्युअल रूप से कैसे सेट करें?

  5. .sql फ़ाइल पोस्टग्रेज में स्क्रीन पर प्रिंट करना