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

गैर-अद्वितीय कॉलम पर एक अद्वितीय अनुक्रमणिका बनाएं

एक अनुक्रमणिका केवल वास्तविक पंक्तियों को अनुक्रमित कर सकती है, एकत्रित पंक्तियों को नहीं। तो, हाँ, जहाँ तक वांछित सूचकांक जाता है, आपके द्वारा बताए गए अद्वितीय मूल्यों के साथ एक तालिका बनाना ही आपका एकमात्र विकल्प है। data.day . से एक विदेशी कुंजी बाधा के साथ संदर्भात्मक अखंडता लागू करें से days.day . तक . यह हो सकता है पूरी स्थिति के आधार पर प्रदर्शन के लिए भी सर्वश्रेष्ठ हो।

हालांकि, चूंकि यह प्रदर्शन . के बारे में है , एक वैकल्पिक समाधान है:आप एक ढीली अनुक्रमणिका स्कैन का अनुकरण करने के लिए पुनरावर्ती CTE का उपयोग कर सकते हैं:

WITH RECURSIVE cte AS (
   (  -- parentheses required
   SELECT day FROM data ORDER BY 1 LIMIT 1
   )
   UNION ALL
   SELECT (SELECT day FROM data WHERE day > c.day ORDER BY 1 LIMIT 1)
   FROM   cte  c
   WHERE  c.day IS NOT NULL  -- exit condition
   )
SELECT day FROM cte;

पहले SELECT . के आसपास कोष्ठक संलग्न ORDER BY . के कारण आवश्यक हैं और LIMIT खंड। देखें:

इसके लिए केवल day . पर एक सादे अनुक्रमणिका की आवश्यकता होती है ।

आपके वास्तविक प्रश्नों के आधार पर विभिन्न प्रकार हैं:

आपके अनुवर्ती प्रश्न के मेरे उत्तर में और अधिक:




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या रेल डिफ़ॉल्ट टाइमस्टैम्प को Y-m-d H:i:s (Y-m-d H:i:s.u के बजाय) में बदलने का कोई तरीका है या लार्वा Y-m-d H:i:s.u के दशमलव भाग को अनदेखा करता है?

  2. पोस्टग्रेएसक्यूएल पीएल/पायथन:वर्चुअलएन्व में संग्रहीत प्रक्रिया को कॉल करें

  3. PostgreSQL - पहली पंक्ति को अन्य पंक्तियों के कुल के रूप में दिखाना

  4. मैं Psycopg2 के लॉगिंग कनेक्शन का उपयोग कैसे करूं?

  5. PostgreSQL Upsert WHERE क्लॉज के साथ