mysql - 使用 SQL 获取帖子的最后回复

标签 mysql

我正在尝试通过获取帖子的最后回复来复制论坛功能。

为清楚起见,请参阅 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/

相关文章:

php - 查询 DROP mysql 动态触发

MySQL 统计两个表的值

PHP MySQL 用户 ID

php - 触发器/过程 MYSQL 的替代方案

java - 如何在单个结果集中连接或联合2个sql查询的结果

mysql - 如何列出员工每周是否记录时间

mysql - 我的大表连接有问题吗?

mysql - 将 MySQL 转储导入 PostgreSQL 数据库

mysql - 如何构建一个计算不同列中不同属性的高效查询

python - Django 错误 : No module named _mysql