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

PostgreSQL पुनरावर्ती क्वेरी में सभी संभावित संयोजन (क्रमपरिवर्तन) खोजें

एक पुनरावर्ती क्वेरी में खोज तालिका में एक पुनरावृत्ति में उपयोग किए जाने वाले शब्द हटा दिए जाते हैं और फिर क्वेरी शेष रिकॉर्ड के साथ दोहराई जाती है। आपके मामले में इसका मतलब है कि जैसे ही आपने पहले सरणी तत्व ("ए") को संसाधित किया है, यह अब सरणी तत्वों के आगे के क्रमपरिवर्तन के लिए उपलब्ध नहीं है। उन "प्रयुक्त" तत्वों को वापस लाने के लिए, आपको पुनरावर्ती क्वेरी में सरणी तत्वों की तालिका के साथ क्रॉस-जॉइन करना होगा और फिर मौजूदा क्रमपरिवर्तन में पहले से उपयोग किए गए सरणी तत्वों को फ़िल्टर करना होगा (position(t.i in cte.combo) = 0 ) और पुनरावृत्तियों को रोकने के लिए एक शर्त (ct <= 3 )।

WITH RECURSIVE t(i) AS (
  SELECT * FROM unnest('{A,B,C}'::char[])
), cte AS (
     SELECT i AS combo, i, 1 AS ct 
     FROM t 
   UNION ALL 
     SELECT cte.combo || t.i, t.i, ct + 1 
     FROM cte, t
     WHERE ct <= 3
       AND position(t.i in cte.combo) = 0
) 
SELECT ARRAY(SELECT combo FROM cte ORDER BY ct, combo) AS result;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql, खाली क्षेत्रों का चयन करें

  2. प्रत्येक क्लाइंट के लिए सेपरेट पोस्टग्रेएसक्यूएल डीबी, सिंगल Django ऐप और एक ही सर्वर पर क्लाइंट बनाने पर स्वचालित माइग्रेशन के साथ

  3. कॉन्फ्लिक्ट सेट कॉलम संदर्भ पर पोस्टग्रेज अस्पष्ट है

  4. एंटिटी फ्रेमवर्क कोर पोस्टग्रेस्क्ल ऐरे टाइप मैपिंग काम नहीं कर रहा है

  5. postgresql createb और CREATE DATABASE एक गैर-खाली डेटाबेस उत्पन्न करता है। क्या कांटा?