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

एकल क्वेरी में एकाधिक सीटीई

कुंजी शब्द का प्रयोग करें WITH एक बार शीर्ष पर। यदि आपका कोई कॉमन टेबल एक्सप्रेशन (CTE) रिकर्सिव (rCTE) है तो आपको कीवर्ड RECURSIVE जोड़ना होगा। शीर्ष पर एक बार साथ ही, भले ही सभी सीटीई पुनरावर्ती न हों:

WITH RECURSIVE
  cte1 AS (...)         -- can still be non-recursive
, cte2 AS (SELECT ...
           UNION ALL
           SELECT ...)  -- recursive term
, cte3 AS (...)
SELECT ... FROM cte3 WHERE ...

मैनुअल:

<ब्लॉककोट>

अगर RECURSIVE निर्दिष्ट है, यह अनुमति देता है एक SELECT नाम से ही संदर्भ के लिए उपश्रेणी।

बोल्ड जोर मेरा। और, और भी अधिक जानकारीपूर्ण:

<ब्लॉककोट>

RECURSIVE का एक और प्रभाव क्या वह WITH . है प्रश्नों का आदेश देने की आवश्यकता नहीं है :एक क्वेरी दूसरे को संदर्भित कर सकती है जो बाद में सूची में है। (हालांकि, सर्कुलर संदर्भ, या पारस्परिक रिकर्सन, लागू नहीं किए जाते हैं।) RECURSIVE के बिना , WITH क्वेरीज़ केवल भाई-बहन को संदर्भित कर सकती हैं WITH क्वेरी जो पहले WITH . में हैं सूची।

मेरा फिर से बोल्ड जोर। मतलब WITH . का क्रम खंड अर्थहीन है जब RECURSIVE कुंजी शब्द का प्रयोग किया गया है।

BTW, cte1 . के बाद से और cte2 उदाहरण में बाहरी SELECT . में संदर्भित नहीं हैं और सादे हैं SELECT आदेश स्वयं (कोई संपार्श्विक प्रभाव नहीं), उन्हें कभी भी निष्पादित नहीं किया जाता है (जब तक कि cte3 . में संदर्भित नहीं किया जाता है )।



  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. क्वेरी जो रिक्त स्थान को अनदेखा करती है

  4. पोस्टग्रेज में फ़ील्ड का डेटाटाइप चुनें

  5. अंतिम डाली गई पंक्ति से मूल्य कैसे प्राप्त करें?