我正在尝试创建一个论坛设置,您可以在其中对特定帖子发表评论,并将回复按日期顺序显示在父级的正下方。父级下面只会有一个子级别。这是示例数据集:
ID.ParentID.Datestamp
12.NULL.2013-03-01 1:00pm
13.NULL.2013-03-01 2:00pm
14.12.2013-03-01 2:20pm
15.12.2013-03-01 2:30pm
16.NULL.2013-03-01 3:30pm
这就是我想要得到的结果:
12.NULL.2013-03-01 1:00pm
14.12.2013-03-01 2:20pm
15.12.2013-03-01 2:30pm
13.NULL.2013-03-01 2:00pm
16.NULL.2013-03-01 3:30pm
我知道我需要某种 CTE,但这不会将子项排序在适当的父项下(显然,因为没有 ORDER BY 子句);我无法弄清楚正确的顺序。任何人都可以提供一些见解吗?
; WITH Messages
AS
(
SELECT ID, ParentID, Datestamp
FROM ForumMessages
WHERE ParentID IS NULL
-- Recursive
UNION ALL
SELECT
t2.ID, t2.ParentID, t2.Datestamp
FROM
ForumMessages AS t2
JOIN Messages AS m ON t2.ParentID = m.ID
)
SELECT ID, ParentID, Datestamp
FROM Messages
对于单层深度,您不需要使用递归 - 尝试:
SELECT ID, ParentID, Datestamp
FROM ForumMessages
order by coalesce(ParentID,ID), Datestamp
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)