mysql - 如何根据上次用户帖子将线程放在顶部(凹凸)?

标签 mysql sql forum posting

<分区>

http://www.vidyasocks.com/requests.php

我想要它,这样当我在一个主题中发帖时,它就会将该主题推到顶部。

这是我当前页面的内容"SELECT * from forum ORDER BY id DESC LIMIT 12";

数据库有一个带有 id(pk) 的线程,并用一个 id(pk) 和一个 thread_id(fk) 回复

我该怎么办?我假设某种内部连接?

最佳答案

您是否有插入话题和回复的日期/时间戳?您不能只根据回复 ID 进行排序,因为有些线程没有任何回复,并且不可能将 thread_id 顺序与回复 ID 顺序相关联。

如果我对你的表结构有正确的想法,你会在给定一些时间戳的情况下做这样的事情:

 SELECT DISTINCT forum.* FROM forum 
      LEFT JOIN replies on
          forum.id = replies.thread_id
  ORDER BY coalesce(replies.reply_timestamp, forum.thread_timestamp) DESC
    LIMIT 12

如果存在回复,合并将返回 replies.reply_timestamp,否则将使用 forum.thread_timestamp。

编辑:根据 Ami 的评论添加了 DISTINCT

关于mysql - 如何根据上次用户帖子将线程放在顶部(凹凸)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10458976/

相关文章:

php - zend 框架重定向问题 : Invalid controller specified

PHP/MySQL : time isn't matching properly with current time

mysql - 创建表时如何禁用 DEFAULT 和 ON UPDATE

php - MySQL : Order by and Group By combining not giving the latest record

java - 要计算 Oracle DB 中股票数据价格列表的移动平均值 - 使用 SQL 还是 Java 更快?

python - 用Python创建动态论坛签名生成器

mysql - 添加论坛 : sharing a database or creating a new one?

php - 使用 PHP 生成 MySQL 到 Excel

mysql - 我想显示来自 2 个或更多查询的所有记录,这些记录也不在左侧查询中

php - 使用全局变量的网站安全