这可能已经被问过 1000 次,但我找不到。
我有以下数据库设计:
Table Comment
ID UserID CommentText DateTime ReplyTo
1 19823 Nice site! 2013-07-08 11:14 NULL
2 232912 Sure this is 2013-07-08 11:15 1
3 84291 Can we get 2013-07-08 11:16 NULL
4 300192 I listened to 2013-07-08 11:17 1
我想像这样嵌套在评论和回复中显示它:
ID
3
1
2
4
所以我想要实现的是通过 DateTime DESC 对所有没有回复的评论进行排序,然后对于每个评论以日期时间升序显示回复。
这可能在一个 SQL 查询中实现吗?
我试过这个,但它出乎意料地错了
SELECT ID, UserID, CommentText, DateTime
FROM Comment
LEFT JOIN Comment AS reply ON Comment.ID = Reply.ReplyTo
GROUP BY ID, UserID, CommentText, DateTime
HAVING ReplyTo IS NULL
ORDER BY DateTime Desc
我应该把它分成两个查询并做一个UNION
吗?或者我应该改变数据库的设计?