Tôi hiểu rằng bạn muốn di chuyển where document_id =1 vào phần dưới của truy vấn.
Tuy nhiên, hãy thận trọng khi làm như vậy vì truy vấn đệ quy không đưa ràng buộc vào with
bản tường trình. Nói cách khác, nó sẽ thực sự quét toàn bộ bảng của bạn, xây dựng đệ quy mọi khả năng và lọc ra những thứ bạn cần.
Bạn sẽ thấy tốt hơn với một hàm sql trong thực tế, tức là một cái gì đó như thế này:
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;