我正在尝试通过获取帖子的最后回复来复制论坛功能。
为清楚起见,请参阅 PHPBB : 有四列,最后一列是我想复制的。
我的表是这样创建的:
- discussion_id(主键)
- 用户编号
- parent_id
- 评论
- 状态
- 发布日期
我正在考虑创建一个链接表,该链接表会在每次回复帖子时更新。
链接表如下:
- discussion_id(主键)
- last_user_id
- last_user_update
但是,我希望有一个提前查询来实现这个方法。也就是说,抓取每个家长讨论,并在每个家长讨论中找到最后的回复。
我说的对吗?
这是一个更新。 我仍然遇到了一些麻烦,但我觉得我快到了。
我当前的查询:
SELECT
`discussion_id`,
`parent_id`,
`user_id` as `last_user_id`,
`user_name` as `last_user_name`
FROM `table1`, `table2`
WHERE `table1`.`id` = `table2`.`user_id`
结果:
discussion_id---------parent_id-----last_user_id-------last_user_name
30---------------------NULL-------------3--------------raiku
31---------------------30---------------2--------------antu
32---------------------30---------------1--------------admin
33---------------------NULL-------------3--------------raiku
添加这个:
GROUP BY `parent_id`
将它变成:
discussion_id---------parent_id-----last_user_id-------last_user_name
32---------------------30---------------1--------------admin
33---------------------NULL-------------3--------------raiku
但我想让它变成:
discussion_id---------parent_id-----last_user_id-------last_user_name
30---------------------NULL-------------3--------------raiku
32---------------------30---------------1--------------admin
33---------------------NULL-------------3--------------raiku
id 30 和 id 33 共享相同的 parent_id: NULL 但它们是“起始线程”或“父帖子”
它们不应该组合,我将如何继续“分组”但“忽略”空值?
最佳答案
此查询将根据 parent_id 进行最高(因此假设是最新)讨论。然而,这不是最简洁的解决方案......
select discussion_id, user_id, pubdate
from tablename
where discussion_id in
(
select max(discussion_id)
from tablename
group by parent_id
)
关于mysql - 使用 SQL 获取帖子的最后回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2505951/