好的,我有一个帖子列表,有些帖子是对其他帖子的回复。我希望以相反的顺序获得一份帖子父母列表。
我已尝试过分组,但它总是列出错误的顺序,而且唯一的方法是我设法让它工作但显然它只列出了帖子ID,而不是其他的数据
这里的数据库示例
我希望将帖子拉出来的顺序是1,3,5,4,2这些是最新回复顺序中的非回复帖子。
SELECT DISTINCT `thread`
FROM
(
SELECT COALESCE(NULLIF(`parent_post`, 0), `postID`) AS `thread`
FROM `posts`
ORDER BY `postID` DESC
LIMIT 100
) `sub`
这会以正确的顺序将它们拉出来,但显然只会拔出postID而不是其他字段,我已尝试分组,但它会丢失正确的顺序。
答案 0 :(得分:0)
您的需求直接转换为SQL将是:
select *
from posts p1
where parent_post = 0
order by (
select max("datetime")
from posts p2
where p2.parent_post = p1.postID
) desc
即。从posts
中选择所有作为线程启动器(而不是回复)的行,并按照其任何回复的最新时间戳按降序排序。