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

एक ही टेबल पर रिकर्सिव क्वेरी पोस्टग्रेज करता है

मुझे लगता है कि आप अपने जहां document_id=1 को क्वेरी के निचले हिस्से में ले जाना चाहते हैं।

हालांकि, ऐसा करने से सावधान रहें, क्योंकि एक पुनरावर्ती क्वेरी बाधा को with में इंजेक्ट नहीं करती है बयान। दूसरे शब्दों में, यह वास्तव में आपकी पूरी तालिका को seq स्कैन करेगा, हर संभावना को पुनरावर्ती रूप से बनाएगा और जिन्हें आपको चाहिए उन्हें फ़िल्टर कर देगा।

आप अभ्यास में एक sql फ़ंक्शन के साथ बेहतर होंगे, यानी कुछ इस तरह:

create or replace function gen_links(int) returns table (doc_id int, doc_url text) as $$
WITH  RECURSIVE generate_links(document_id,url_id) as(  
    select document_id,url_id from document_urls where document_id=$1
UNION ALL
    select du.document_id,du.url_id from generate_links gl,document_urls du
    where gl.url_id=du.url_id 
)

SELECT * FROM generate_links GROUP BY url_id,document_id;
$$ language sql stable;



  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. @Tailable(spring-data-reactive-mongodb) स्प्रिंग-डेटा-r2dbc के बराबर

  3. public.table नाम के बिना तालिका तक नहीं पहुंच सकता। क्या जनता से छुटकारा पाने का कोई तरीका है?

  4. त्रुटि:शून्य-लंबाई सीमांकित पहचानकर्ता लाइन 1 पर या उसके पास:उन क्षेत्रों से हटाएं जहां क्षेत्र हैं। =$1

  5. INSERT में अस्पष्ट कॉलम संदर्भ ... संघर्ष पर अद्यतन करें