如何按帖子、新帖子和新评论排序



我正在做帖子评论系统。我已经做了,但有一些问题,当按desc和按评论desc排序它

这是我的代码

SELECT u.username
, u.id
, s.id
, s.created
, s.message
, s.story_id
, c.created
, c.message
, c.id
, c.story_id 
FROM users u
, story s
, comment c
WHERE u.id = s.id 
AND c.story_id = s.story_id
GROUP 
BY s.story_id //for dublicate
ORDER 
BY s.created DESC
, c.created DESC

并且我也尝试了许多查询,如RIGHT JOINETC或MAX(story.created)comment.created) DESC

但是输出:

如果我创建一个帖子,它将不会显示或在我的页面上可见,除非我点击评论。如果没有评论,没有评论的新帖子将不可见。

我想在new post desc中对它进行排序并且有新的评论,它将按desc排序或显示到top

我想到了这样的东西。我在一些数据上测试了它,这个原理似乎是有效的。

SELECT
*,
IFNULL((SELECT MAX(comment.created) 
FROM comment 
WHERE comment.story_id = story.story_id), 0) AS lastCommented
FROM 
users,
story
WHERE 
users.id = story.id 
ORDER BY 
GREATEST(story.created, lastCommented) DESC
如您所见,这是一个基本查询,也可以写成JOIN查询,具有两个特殊特性:
  1. 子查询它计算一个故事的评论的最新创建时间。如果没有注释,时间将为零。
  2. 排序在哪个更大,故事的时间或最后一个评论。

这有点难看,还有另一个解决方案。您可以在故事表中创建一个新字段,其中包含最近进行评论的时间。这样就完全不需要子查询了。

最新更新