अपनी पुनरावर्ती क्वेरी के लिए, आप 0-गद्देदार स्ट्रिंग्स के साथ इस ट्रिक का उपयोग करके एक पदानुक्रमित पथ बना सकते हैं:एसक्यूएल फिडल
with recursive comment_list(article_comment_id, parent_comment_id, comment, article_id, comment_depth, comment_path) AS (
select c.article_comment_id,
c.parent_comment_id,
c.comment,
c.article_id,
c.comment_depth,
substr(CAST(1000000000+c.article_comment_id as varchar(1000)),2)
from test_comment c
where article_id = 100
and parent_comment_id = 0
union all
select c.article_comment_id,
c.parent_comment_id,
c.comment,
c.article_id,
c.comment_depth,
cl.comment_path || substr(CAST(1000000000+c.article_comment_id as varchar(1000)),2)
from test_comment c
join comment_list cl on c.parent_comment_id = cl.article_comment_id
)
select cl.article_comment_id,
cl.comment_path,
cl.parent_comment_id,
cl.comment,
cl.article_id,
cl.comment_depth
from comment_list cl
order by cl.comment_path, cl.article_comment_id, cl.comment_depth;
ग्रुप बाय छोड़ें। आप उन्हें प्रदर्शन के लिए "समूह" करना चाहते हैं, जो वास्तव में "ऑर्डर बाय" है
select cl.parent_comment_id,
cl.article_comment_id,
cl.comment,
cl.article_id,
cl.comment_depth
from comment_list cl
order by cl.parent_comment_id, cl.article_comment_id, cl.comment_depth;
आपको अभी भी cl.root_id
. की आवश्यकता हो भी सकती है और नहीं भी क्रम में, तो यह हो सकता है
order by cl.root_id, cl.parent_comment_id, cl.article_comment_id, cl.comment_depth;