一个开源的论坛,所有的帖子无论是新帖还是回复帖都保存在一个数据库中。其中数据库的字段结构如下:¦帖子ID ¦ 回复ID ¦标题 ¦内容 ¦ ........ | 最后回复时间 | ...其中“回复ID”字段作为判断该帖子是“主题帖子”还是“回复贴子”的依据:
当   “回复ID=0”的时候判断为主题帖子;
当“回复ID不=0(此时的数值为某一新帖的“帖子ID”值)”的时候判断为回复帖子。问题来了:
在网页的源代码中,查询主题贴子列表的语句为“select   *   frome   XXX   where   回复ID=0   order   by   最后回复时间   DESC”,如此以来,主题帖子虽然可以按照发表的时间后前的顺序来排列,但是无法按照最后回复的时间后前的顺序来排列,也就是说,实现不了顶帖子的功能。想问的是:
如何在不增加字段的前提下,仅仅通过SQL语句实现顶帖子的效果??谢谢先!

解决方案 »

  1.   

    在数据中增加一栏位 w点击某个按钮
    实现w加1
    然后根据order by 来实现~ 
      

  2.   

    如何在不增加字段的前提下,仅仅通过SQL语句实现顶帖子的效果?? 
    ____________________________________________________________不增加字段,做不到!
      

  3.   

    主要是无法增加字段了。我想:通过“select distinct 帖子ID  from xxx where 回复ID = 0 order by 最后回复时间 DESC”可以得到一组帖子ID的降序排列数据,但是不知道如何能利用这个结果集做点什么?
      

  4.   

    “where in ”是否可行?
      

  5.   

    have a tryselect A.*
     frome XXX A,
           (select 帖子ID, MAX(最后回复时间) as 最后回复时间 from XXX group by 帖子ID) B
     where A.回复ID=0
       and A.帖子ID = B.帖子ID
     order by B.最后回复时间 DESC
      

  6.   

    问一下楼主呢?
    你说的顶帖子是说的回复了就排前面了?还是说的置顶帖子啊?如果是说的回复了就排前面了,不加字段可以实现。
    select * from XXX where 回复ID=0 order by 最后回复时间 DESC
    这个语句就已经实现了啊
    难道是最后回复时间在发新主题的时候是空?如果是这样的话,可以在发新主题的时候同时向发表时间和最后回复时间写入发表时间
    或者
    select * from XXX where 回复ID=0 order by 最后回复时间 DESC,帖子ID DESC如果LZ说的是置顶帖子
    不加字段是不行的,如果没有置顶的标志字段,怎么知道那个帖子置顶了呢?加了置顶标志后(如字段名为top)select * from XXX where 回复ID=0 order by top DESC,最后回复时间 DESC
    或者
    select * from XXX where 回复ID=0 order by top DESC,最后回复时间 DESC,帖子ID DESC如有错误的地方,请大家指正