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

SQL में WITH क्लॉज का उपयोग करने पर मार्गदर्शन

यदि समवर्ती लेखन पहुंच हो सकती है शामिल तालिकाओं के लिए, निम्नलिखित प्रश्नों में दौड़ की स्थिति है। विचार करें:

आपका उदाहरण कर सकते हैं एक सीटीई (सामान्य तालिका अभिव्यक्ति) का उपयोग करें, लेकिन यह आपको कुछ भी नहीं देगा जो एक सबक्वायरी नहीं कर सका:

WITH x AS (
   SELECT  psp_id
   FROM    global.prospect
   WHERE   status IN ('new', 'reset')
   ORDER   BY request_ts
   LIMIT   1
   )
UPDATE global.prospect psp
SET    status = status || '*'
FROM   x
WHERE  psp.psp_id = x.psp_id
RETURNING psp.*;

लौटाई गई पंक्ति अपडेट की गई . होगी संस्करण।

यदि आप लौटाई गई पंक्ति को किसी अन्य तालिका में सम्मिलित करना चाहते हैं, वह वह जगह है जहां WITH क्लॉज जरूरी हो जाता है:

WITH x AS (
   SELECT  psp_id
   FROM    global.prospect
   WHERE   status IN ('new', 'reset')
   ORDER   BY request_ts
   LIMIT   1
   )
, y AS (
   UPDATE global.prospect psp
   SET    status = status || '*'
   FROM   x
   WHERE  psp.psp_id = x.psp_id
   RETURNING psp.*
   )
INSERT INTO z
SELECT *
FROM   y;

CTE का उपयोग करके डेटा-संशोधित क्वेरी को PostgreSQL 9.1 के साथ जोड़ा गया था।
The मैनुअल के बारे में WITH प्रश्न (सीटीई) ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DictCursor psycopg2 के तहत काम नहीं कर रहा है

  2. हर 15 मिनट में एक पंक्ति के लिए एक विशाल समय श्रृंखला तालिका को कुशलतापूर्वक क्वेरी करना

  3. आयात psycopg2 लायब्रेरी लोड नहीं:libssl.1.0.0.dylib

  4. पोस्टग्रेज यूनिक्स डोमेन सॉकेट 5432 पर सर्वर से कनेक्ट नहीं हो सकता है

  5. दूरस्थ पोस्टग्रेज सर्वर को pgAdmin के साथ एक्सेस करें